链接N个依赖的可观察物

时间:2020-08-03 15:29:11

标签: android rx-java2

我对反应式编程非常陌生,并且已经将自己介绍给Android中的RxJava2。暂时,我遇到了一些简单的问题,例如可观察的内容压缩。但是现在,我想解释一些新的东西。

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

我该怎么办?还有其他运算符吗?

1 个答案:

答案 0 :(得分:2)

您可以使用flatMapIterablemin展平为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>运算符中执行其他操作以满足您的需求。