2017-03-31 7 views
1

Angenommen, ich habe zwei Observablen:Wie kann man den Wert von einer beobachtbaren zur anderen mit einem beobachtbaren Wert abbilden?

Observable<MainInfo> mainInfoObs und

Observable<AdditionalInfo> additionalInfoObs(MainInfo mainInfo) Funktion.

möchte ich irgendwie diese Observablen zu kombinieren, erhalten Pair<MainInfo, AdditionalInfo>

Ich kann nicht einfach zip verwenden, da additionalInfoObs auf mainInfo abhängt.

Deshalb möchte ich so etwas wie

mainInfoObs 
    .map(mainInfo->new Pair(mainInfo, 
        getAdditionalInfo(mainInfo).toBlocking().last() 
        ) 
     ) 

Aber das Blöcke und hängt tun.

Bitte helfen Sie mir - wie Observablen zu kombinieren, wie ich will?

Antwort

0

Es stellte sich heraus, dass flatMap eine Variante mit 2 Argumenten hat, was ich brauche. Hier ist meine Lösung mit flatmap:

mainInfoObs.flatMap(mainInfo->getAdditionalInfo(mainInfo), Pair::new) 
Verwandte Themen