链接 N 个依赖的可观察量
Chaining N dependant observables
我对反应式编程还很陌生,我在 Android 中介绍了 RxJava2。目前,我遇到了简单的问题,例如压缩可观察对象。但是现在,出现了一些新的东西,我正在尝试解释。
假设我有一个请求列表 Observable<List<Request>>
。我想要做的是调用一个 Web 服务,每个请求 returns,路由列表(包装在 Observable 中)。我已经检查了像 这样的问题,但在这种情况下,我认为我不能 flatMap 一个 observable 和一个 observable 列表。
我该怎么做?还有其他运营商吗?
您可以使用 flatMapIterable
将 Observable<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
运算符中做一些不同的事情来满足你的需要。
我对反应式编程还很陌生,我在 Android 中介绍了 RxJava2。目前,我遇到了简单的问题,例如压缩可观察对象。但是现在,出现了一些新的东西,我正在尝试解释。
假设我有一个请求列表 Observable<List<Request>>
。我想要做的是调用一个 Web 服务,每个请求 returns,路由列表(包装在 Observable 中)。我已经检查了像
我该怎么做?还有其他运营商吗?
您可以使用 flatMapIterable
将 Observable<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
运算符中做一些不同的事情来满足你的需要。