我对反应式编程非常陌生,并且已经将自己介绍给Android中的RxJava2。暂时,我遇到了一些简单的问题,例如可观察的内容压缩。但是现在,我想解释一些新的东西。
假设我有一个请求列表Observable<List<Request>>
。我想做的是调用一个Web服务,该服务会为每个请求返回路由列表(包装在Observable中)。我已经检查过this之类的问题,但是在这种情况下,我想我无法对可观察对象和可观察对象列表进行flatMap。
我该怎么办?还有其他运算符吗?
答案 0 :(得分:2)
您可以使用flatMapIterable
将min
展平为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>
运算符中执行其他操作以满足您的需求。