我正在使用RxJava,其中我想要基于某些条件动态创建许多可观察对象。完成创建后,我想对由可观察对象返回的不同值进行一些处理,然后作为一个可订阅的可观察对象发送。下面是我的代码:
List<String> valueList = ....
List<Observable<String>> listOfObservables = new ArrayList<Observable<String>>();
for(int i =; i <valueList.size(); i++){
listOfObservables.add(new SomeClass.doOperation(valueList(i)));
// SomeClass.doOperation will return an Observable<String>
}
return Observable.merge(listOfObservables);但在这里,我想对listOfObservable中不同可观察对象发出的值进行一些操作,并最终将其作为单个Observable<String>返回
就像在Observable.zip()中一样,我可以这样做
return Observable.zip(observable1, observable2, (string1, string2) -> {
// joining final string here
return string1 + string2;但我知道这里的参数数量。请告诉我如何才能做到这一点。
发布于 2016-08-29 15:45:11
使用zip重载that takes a variable number of arguments,它的签名为
<R> Observable<R> zip(Iterable<? extends Observable<?>> ws,
FuncN<? extends R> zipFunction)示例用法:
List<String> valueList = ....
return Observable.from(valueList)
.map(string -> SomeClass.doOperationThatReturnsObservable(string))
.toList()
.flatMap(listOfObs -> Observable.zip(listOfObs, (Object[] results) -> {
// do something with the strings in the array.
return Arrays.stream(results)
.map(Object::toString)
.collect(Collectors.joining(","));
}));https://stackoverflow.com/questions/39200322
复制相似问题