Ich bin neu bei rxjava. Ich muss zwei Observables kombinieren, die Objekte unterschiedlichen Typs aussenden. Etwas wie Observable<Milk>
und Observable<Cereals>
und erhalten Sie eine Observable<CerealsWithMilk>
. Ich konnte für so etwas keinen Operator finden. Was wäre die Art, so etwas zu tun? Beachten Sie, dass Milk
und Cereals
async sind.rxjava merge Observablen verschiedener Art
Antwort
Es ist schwer zu sagen, ohne genau zu wissen, was Sie brauchen, aber möglicherweise zip() oder combineLatest().
zip
nehmen beide Observable<Milk>
und Observable<Cereals>
und lassen Sie sie in CerealsWithMilk
über eine bereitgestellte Funktion kombinieren. Dies gibt eine neue CerealsWithMilk
jedes Mal, wenn Sie erhalten sowohl ein Milk
und ein Cereals
.
combineLatest
ist ähnlich zip
außer es ein neues CerealsWithMilk
auch wenn nur ein neues Milk
oder nur ein neues Cereals
emittiert wird, emittiert wird.
Wenn Sie Observablen unterschiedlicher Art zusammenführen müssen Sie Observable.zip
verwenden:
Observable<String> o1 = Observable.just("a", "b", "c");
Observable<Integer> o2 = Observable.just(1, 2, 3);
Observable<String> result = Observable.zip(o1, o2, (a, b) -> a + b);
result
wird eine beobachtbare Erzeugen der Anwendung von (a, b) -> a + b
-o1
‚s und o2
‘ s Elemente sein. Ergebnis in einer beobachtbaren Ausbeute "a1", "b2", "c3"
.
Zip sieht genau so aus, was ich brauche. Vielen Dank! – Jelly
Hinweis - (so lange jedes der Observablen mindestens ein Element ausgegeben hat). – LEO