Ich habe 2 Service-Endpunkte in meiner Anwendung a
und b
(Beide sind "Singles"). Die Serviceanforderung b
hängt von der Antwort a
ab. Nach der Antwort von b
brauche ich Zugriff auf beide Antworten in meinem Abonnenten. Ich plane, den Anruf wie dies zu tun:RxJava erhalten Ergebnis der vorherigen beobachtbaren in verketteten Netzwerk-Anfrage
services.a()
.flatMap(a -> services.b(a))
.subscribe(b ->
// Access a and b here
)
Aber auf diese Weise, kann ich nur das Ergebnis von b
in meinem Teilnehmer zugreifen. Wie kann ich auch die Antwort von a
daran weitergeben?
Mein erster Versuch war, so etwas zu verwenden:
// Note: Code will not compile... Just to show the concept
services.a()
.flatMap(
a -> Observable.combineLatest(
Observable.just(a)
services.b(a).toObservable()
Bifunction((a, b) -> {return Pair<ResponseA, ResponseB>(a, b)})
)
)
.toSingle()
.subscribe(pair -> {
ResponseA a = pair.first();
ResponseB b = pair.second();
})
Aber als usecase bekommt ein wenig komplexer, wird der Code zu einem hässlichen Monster entwickeln.