2017-02-24 6 views
0

私は項目のリストを返すレスポンスを取る方法を理解しようとしています。そして、それらの項目のそれぞれに対して要求を行い、オブジェクトを返し、レスポンスをリストに追加します。RxJava:個々の項目のストリームをリストに変換する

私は一度に1つずつ発光させることで動作させていますが、それらをすべてリストにパッケージ化したいと思います。

私は、この今のところ

getListOfData() 
.flatMapIterable(list -> list) 
.flatMap(item -> getData(item) 

私が試したToListメソッドを持っている()が、私はそれが今まで何も返される前に、これは完全な信号を必要と理解しています。

私はrxjava 2を使用しています。私はrxjava 1でtoList()を使用しているように感じ、期待通りに動作しました。どんな助けでも大歓迎です!

+1

まだ返されていない項目の穴を含む 'List'を返さない限り、' toList'は行く方法です。また、すべての要素がデータを受け取ったときにリストを取得します。 'onComplete'は、リストが伝播されるまで伝播しません。 –

+0

それは私が振る舞う方法ですが、何も得られません。「oncomplete」は決して起こりそうにないようですが、私がそれらを個性的にすると、最初の呼び出しからx応答を得て、その後x項目が放出されます。 –

+1

放出されるアイテムはonCompleteと同じではありませんが、個々のObservableがonCompleteイベントを放出することは確実ですか? – yosriz

答えて

0

ミステリーが解決されました。私は複数の放出したくない場合は

私の元の例では、私はちょうど多分私はPublishSubjectを使用すべきではないonNextやっていた問題は、私は私のPublishSubjectonCompleteを呼び出していなかったた

ToListメソッド()で動作します物事?

+0

PublishSubjectを使わないと、おそらくコードを単純化することができます。 –

0

fromIterable代わりのflatMapIterableを使用してみてください、そしてtoList()

+0

これを例に挙げてください。私はこの仕事をどうやって作れるのかよく分かりません。 –

0

は、この動作します動作するはず?

getListOfData() 
.flatMapIterable(list -> list) 
.flatMap(item -> getData(item)) 
.flatMap(itemList -> Observable.from(itemList)) // <-- magic here. Maps each result List<Something> to Observable<Something> 
関連する問題