RxJava - Observable的zip列表
问题描述:
我有一个Observable列表(RxJava 1)。RxJava - Observable的zip列表
List<Observable> observableList = new ArrayList<>();
它可以包含至少1个Observable。每个都有相同的结果类型。
我该如何压缩所有Observables的结果?
我想到了拉链的运营商,但它不支持列表,我不知道可观的数量(也可以是1,2,3,4 ......)
答
可以使用静态zip(java.lang.Iterable<? extends Observable<?>> ws,FuncN<? extends R> zipFunction)
method。
据被新的返回被省略一个zip
方法,该方法的Observable
秒的Iterable
和FuncN
(这需要一个varargs参数为其call
方法),并使用它来相应发射Object
小号结合到结果Observable
。
因此,举例来说,你可以这样做:
Observable.zip(observableList, new FuncN(){
public ReturnType call(java.lang.Object... args){
ReturnType result; //to be made
//preparatory code for using the args
for (Object obj : args){
ReturnType retObj = (ReturnType)obj;
//code to use the arg once at a time to combine N of them into one.
}
return result;
}
});
有一个拉链重载需要观察量的可迭代和FuncN:http://reactivex.io/RxJava/1.x/javadoc/rx/ Observable.html#拉链(java.lang.Iterable,%20rx.functions.FuncN) – akarnokd