Unii
Unii

Reputation: 1617

Rxjava chain more than one request

I am new in concept of RxJava. I would like to chain some calls:

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

//This call will get me RoomIds Next step is to call for all RoomIds - request after request

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

How should I chain first call with next calls?

I thinkt that I should use flatMap and loop to call all requets but how to connect all responses on the end?

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

Upvotes: 1

Views: 435

Answers (1)

akarnokd
akarnokd

Reputation: 69997

Turn the inner list into an Observable and flatMap over it again:

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

or

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

Upvotes: 3

Related Questions