链接 N 个依赖的可观察量

Chaining N dependant observables

我对反应式编程还很陌生,我在 Android 中介绍了 RxJava2。目前,我遇到了简单的问题,例如压缩可观察对象。但是现在,出现了一些新的东西,我正在尝试解释。

假设我有一个请求列表 Observable<List<Request>>。我想要做的是调用一个 Web 服务,每个请求 returns,路由列表(包装在 Observable 中)。我已经检查了像 这样的问题,但在这种情况下,我认为我不能 flatMap 一个 observable 和一个 observable 列表。

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

您可以使用 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<Request> 向下游发射。如果你想要不同的类型,你可以在 map 运算符中做一些不同的事情来满足你的需要。