2016-05-16 22 views
0

ich auf ReactiveX und Retrofit gerade erst begonnen, Betrachtet folgendes Beispiel Beispiel NachrüstungWrapping Observablen in Aktion eines anderen beobachtbaren

@GET 
public Observable<ResponseType1> makeFirstCall(); 

@POST 
public Observable<ResponseType2 makeSecondCallWithFirstResponse(@Body ResponseType1 input); 

Ist es eine gute Idee, in einem anderen action1 beobachtbar haben? wie unter

makeFirstCalle().subscribe((responseType1) -> { 

    makeSecondCallWithFirstResponse(responseType1).subscribe("second action goes here") 

}); 

Antwort

2

Warum concatMap oder flatMap nicht verwenden?

makeFirstCall().concatMap(responseType1 -> makeSecondCallWithFirstResponse(responseType1)) 
       .subscribe(....) 

Sie können die Verkettung beibehalten, wenn Sie zusätzliche API-Anrufe haben. Zum Beispiel

makeFirstCall().concatMap(responseType1 -> makeSecondCallWithFirstResponse(responseType1)) 
       .concatMap(responseType2 -> makeThirdCallWithSecondResponse(responseType2)) 
       .subscribe(....) 
+0

Ich habe mehr als 3 API-Anrufe, die ich auf der Grundlage der vorherigen Antwort aufrufen muss. Ist das der einzige Weg? Oder gibt es irgendwelche Möglichkeiten gibt es? – Hareesh

+0

Wenn Sie Observable wie beschrieben ketten wollen, sehe ich keine andere Möglichkeit. Was ist das Problem mit FlatMap oder ConcatMap? – JohnWowUs

+0

Ich weiß nicht, ich habe nur gefragt. – Hareesh