Rxjava 链接多个请求 [英] Rxjava chain more than one request

查看:115
本文介绍了Rxjava 链接多个请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是 RxJava 概念的新手.我想链接一些调用:

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

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

//这个电话会得到我的RoomIds下一步是调用所有 RoomIds - 请求后请求

//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?

我认为我应该使用 flatMap 和循环来调用所有的请求,但是最后如何连接所有的响应?

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);
            }
        })

推荐答案

将内部列表转成 ObservableflatMap 再次:

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(/* */);

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

这篇关于Rxjava 链接多个请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆