2017-12-18 2 views
0

Ich bin neu im Konzept von RxJava. möchte ich Kette wie einige Anrufe:Rxjava Kette mehr als eine Anfrage

Observable<RoomList> listRoomsCall = mRoomServiceApi.listRooms(); 

// Dieser Aufruf mich RoomIds Im nächsten Schritt erhalten wird für alle RoomIds zu nennen - Anfrage nach Anfrage

mMeetingServiceApi.listMeetings(roomID, startsAtString, endsAtString, free)) 

Wie soll ich das erste Verbindungskette mit nächsten Anrufen?

Ich denke, dass ich flatMap und Schleife verwenden sollte, um alle Requets aufzurufen, aber wie alle Antworten am Ende zu verbinden?

listRoomsCall.flatMap(v -> { 
      for (ExchangeRoom exchangeRoom : v.getExchangeRoomList()) { 
       mMeetingServiceApi.listMeetings(roomID, startsAtString, endsAtString, free); 
      } 
     }) 

Antwort

2

Drehen Sie die innere Liste in eine Observable und flatMap über sie wieder:

listRoomsCall 
.flatMapIterable(v -> v.getExchangeRoomList()) 
.flatMap(exchangeRoom -> { 
    mMeetingServiceApi.listMeetings(roomID, startsAtString, endsAtString, free); 
}) 
.subscribe(/* */); 

oder

listRoomsCall 
.flatMap(v -> 
    Observable.fromIterable(v.getExchangeRoomList()) 
    .flatMap(exchangeRoom -> { 
     mMeetingServiceApi.listMeetings(roomID, startsAtString, endsAtString, free); 
    }) 
) 
.subscribe(/* */); 
+0

Vielen Dank für Hilfe. – Unii

Verwandte Themen