2017-12-18 198 views
0

我是RxJava的新概念。 我想鏈的一些電話:Rxjava鏈條不止一個請求

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

//這個調用會讓我RoomIds 下一步就是要求所有RoomIds - 請求後要求

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

我應該如何連鎖第一個電話接下來的電話?

我認爲我應該使用flatMap和循環來調用所有的請求,但如何連接所有的響應?

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

回答

2

再次打開內部列表爲ObservableflatMap了它:

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

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

感謝您的幫助。 – Unii