【问题标题】:Chaining N dependant observables链接 N 个依赖的 observables
【发布时间】:2020-08-07 22:42:42
【问题描述】:

我是响应式编程的新手,我已经向自己介绍了 Android 中的 RxJava2。目前,我遇到了一些简单的问题,例如压缩 observables。但是现在,出现了一些新的东西,我试图解释一下。

假设我有一个请求列表Observable<List<Request>>。我想要做的是调用一个 Web 服务,它根据每个请求返回路由列表(包装在 Observable 中)。我已经检查过this 之类的问题,但在这种情况下,我认为我无法对可观察对象和可观察对象列表进行平面映射。

我该怎么做?还有其他运营商吗?

【问题讨论】:

    标签: android rx-java2


    【解决方案1】:

    您可以使用flatMapIterableObservable<List<Request>> 展平为Observable<Request>。假设您有一个带有签名 Observable<List<Route>> getListOfRoutes(Request request) { ... } 的辅助方法,您可以这样做:

    Observable<List<Request>> obs = ...;
    obs.flatMapIterable(l -> l)
       .flatMap(request -> getListOfRoutes(request)
           .doOnNext(routes -> request.setRoutes(routes))
           .map(ign -> request)
       )
       ...
    

    这是假设您最终希望将Observable&lt;Request&gt; 发送到下游。如果你想要不同的类型,你可以在 map 运算符中做一些不同的事情来满足你的需要。

    【讨论】:

    • 然后呢?我想合并两个 observables,以便将路由列表设置为请求。
    • @russellhoff 你的意思是你想打电话给Request.setRoutes(routes)?你最终想在这里发出什么类型的? Observable&lt;Request&gt;?还有什么?
    • @russellhoff 我更新了我的答案。如果这不是您想要的,请告诉我。
    • 我现在正在尝试。问题是每个请求的路由都是使用另一个 Web 服务获取的。
    • @russellhoff 嗯,这是为什么?
    猜你喜欢
    • 1970-01-01
    • 2021-09-13
    • 2021-01-16
    • 2019-04-22
    • 2019-02-03
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多