我是 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);
}
})
最佳答案
将内部列表变成一个 Observable
并在其上再次使用 flatMap
:
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(/* */);
关于java - Rxjava链式多于一个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47868504/