2016-12-21 9 views
3

私は、要求に基づいてN個の観測値を作成しなければならない状況があります。私はzipを使用して、観測数の既知の数を結合できることを理解しています。しかし、私は未知数の観測値をどのように組み合わせることができるか理解していません。RxJavaでObservablesの不明な数を結合する

私が明らかにしていない部分がジップする機能です。 Observableの数に応じて、N個の引数をとるラムダを作成する必要があります。

すべてのオブザーバブルが、異なるタイプのオブジェクトを返します。

+0

をあなたは少し考えて説明するだろうこれは、いくつかのコードを追加してください。ここで何を達成しようとしているのかははっきりしていません。 – koperko

+0

これらのオブザーバブルとは何ですか?また、いくつのアイテムが生成されますか? 'zip(Observable >、FuncN)'オーバーロードを見てきましたか? – akarnokd

+0

ありがとう@akarnokd。私はジップを見た。この問題は、リクエストによって観測可能数が決まるため、ジップに使用可能な観測データの数が不明であることが原因です。 3つの観測値がある場合は、N個の観測値がある場合は3つのパラメータを受け入れるラムダを作成し、次にN個のパラメータを持つラムダを作成します。実行時には保守可能ではなく決定されます。 –

答えて

1

あなたがリストとして、あなたの観測は、一般的なタイプのオブジェクトを返すようにそれをマージして処理することができます

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

observable to mergeメソッドのリストを渡すことさえできます。 –

+0

申し訳ありませんが、私の間違い。 'mergeWith'でなければなりません。私は私の答えを編集しました。 –

関連する問題