[英]RxJava: dynamically create Observables and send the final resut as Observable
I am using RxJava in which I want to dynamically create a number of Observables based on some condition. 我正在使用RxJava,在其中我要根据某些条件动态创建多个Observable。 Once I'm done with creating, I want to do some processing on the different values returned by the observables and then send as a single Observable to which I can subscribe on. 创建完之后,我想对可观察对象返回的不同值进行一些处理,然后将其作为可订阅的单个可观察对象发送。 Here is how my code is : 这是我的代码:
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);
But here , I want to do some operation on the values emitted by different Observables in the listOfObservable
and finally return it as a single Observable<String>
但是在这里,我想对listOfObservable
不同Observable发出的值做一些操作,最后将其作为单个Observable<String>
Like in Observable.zip()
, I can do this like 就像在Observable.zip()
,我可以这样做
return Observable.zip(observable1, observable2, (string1, string2) -> {
// joining final string here
return string1 + string2;
But I know the number of arguments here. 但是我知道这里的论点数量。 Please let me know how I can achieve this. 请让我知道我如何实现这一目标。
Use the zip
overload that takes a variable number of arguments , it has a signature of 使用带可变数量参数的zip
重载,其签名为
<R> Observable<R> zip(Iterable<? extends Observable<?>> ws,
FuncN<? extends R> zipFunction)
Example usage: 用法示例:
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(","));
}));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.