2017-04-20 5 views
3

Ich habe eine Liste von Observables (RxJava 1).RxJava - Zip-Liste von Observable

List<Observable> observableList = new ArrayList<>(); 

Es kann mindestens 1 Observable enthalten. Jeder hat den gleichen Typ des Ergebnisses.

Wie kann ich die Ergebnisse aller Observables zippen?

Ich dachte über zip-Betreiber aber keine Liste unterstützen, und ich weiß nicht Quantität von Observablen (es 1,2,3,4 sein kann ....)

+0

Es ist eine ZIP-Überlastung, die eine Iterable von Observablen und FuncN nimmt: http://reactivex.io/RxJava/1.x/javadoc/rx/ Observable.html # zip (java.lang.Iterable,% 20rx.functions.FuncN) – akarnokd

Antwort

5

Sie können die Verwendung statisch zip(java.lang.Iterable<? extends Observable<?>> ws,FuncN<? extends R> zipFunction) method.

Es wird ein zip Methode, die eine Iterable von Observable s und einen FuncN (das für seine call Methode nimmt einen varargs Parameter) hat und verwendet sie, um die entsprechenden emittierten Object s in das Ergebnis zu kombinieren, indem die neue weggelassen werden zurückgegeben Observable.

So zum Beispiel die Sie tun können:

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; 
    } 
}); 
Verwandte Themen