2017-02-27 2 views
1

Ich verwende RxJava2 und haben eine fließfähige Funktion wie dieseIst es möglich, innerhalb eines `zipWith`-Operators zu abonnieren?

Flowable1 
    .doOnNext() 
    .toList() 
    .onErrorReturnItem() 
    .zipWith(Flowable2 
      .toList() 
      .onErrorReturnItem()){ 
     condition1 -> return list1 
     condition2 -> return list2 

     return list3 
    } 
    .flattenAsFlowable() 
    .flatMap() 

Im zipWith Operator I Bedingungen, die verschiedenen Listen je nach Ergebnis zurück. Und eigentlich ist die final flatMap nur für list3 gedacht. Aber ich kann nicht formulieren, wie man es innerhalb des zipWith() Bedieners hat, während ich noch die Reihenfolge fortsetze. Ich denke, dass ich noch abonnieren müsste, wenn ich es in den zipWith Operator einwickeln würde, der in wirre Fäden resultieren würde

Gibt es einen Weg darum herum?

+0

Es ist nicht klar, was Sie versuchen, genau das zu erreichen? Was ist die Liste3? auf welche params die Bedingungen abhängen? – yosriz

Antwort

0

Nach ein paar Stunden, ich habe einen Weg schließlich formuliert aus einer Liste zurückzukehren, um eine fließfähige innerhalb zipWith bilden:

Flowable1 
    .doOnNext() 
    .toList() 
    .onErrorReturnItem() 
    .zipWith(Flowable2 
      .toList() 
      .onErrorReturnItem()){ 
     condition1 -> return list1 
     condition2 -> return list2 

     return Flowable.fromtIterable(list3) 
        .flatMap() 
        .toList() 
        .blockingGet() 
    } 
    .flattenAsFlowable() 
Verwandte Themen