2016-12-21 10 views
3

Ich habe eine Situation, wo ich N Observables basierend auf der Anfrage erstellen muss. Ich verstehe, dass ich zip verwenden kann, um bekannte Anzahl von Observablen zu kombinieren. Aber ich bin dabei zu verstehen, wie ich eine unbekannte Anzahl von Observablen kombinieren kann.Kombinieren Unbekannte Anzahl von Observablen in RxJava

Der Teil, wo ich nicht klar bin, ist die Funktion zu zippen. Abhängig von der Anzahl der Observablen muss ich ein Lambda erstellen, das N Argumente akzeptiert.

Alle Observables geben verschiedene Arten von Objekten zurück.

+0

Bitte einen Code hinzufügen, die Ihr Denken ein wenig erklären würde. Es ist sehr unklar, was Sie hier erreichen wollen. – koperko

+0

Was sind diese Observablen und wie viele Artikel produzieren sie? Hast du dir die 'zip (Observable >, FuncN)' Überladung angeschaut? – akarnokd

+0

Danke @akarnokd. Ich habe auf zip geschaut. Das Problem damit ist nicht sicher, wie viele Observables verfügbar sein werden, da die Anfrage die Anzahl der Observablen bestimmt. Wenn es 3 Observables gibt, habe ich ein Lambda geschrieben, das 3 Params akzeptiert, wenn es N Observables gibt, dann habe ich ein Lambda mit N Params geschrieben .. welches zur Laufzeit nicht wartbar und bestimmt ist. –

Antwort

1

Sie können Ihre Observable zurückgeben Objekte allgemeinste Art, fusionieren und zu verarbeiten als Liste machen:

class Result1 implements Result 
class Result2 implements Result 
class REsult3 implements Result 

for(Observable o : yourObservableList) 
    resultObservable.mergeWith(o) //use concat() if you need serial execution 

resultObservable 
    .toList() 
    .doOnNext(results -> { 
     //process your results (List<Result>) 
    } 
    .subscribe(...) 
+0

können Sie sogar die Liste der beobachtbaren zu merge-Methode übergeben. –

+0

Entschuldigung, mein Fehler. Sollte "mergeWith" sein. Ich habe meine Antwort bearbeitet. –

Verwandte Themen