3

1 つの Observable を使用して 1 つのタスクを実行し、出力されたデータを取得してから、別の Observable を使用して別のクエリを実行する必要があります。通常、私は a を使用しflatmapて 2 つの Observable をチェーンし、出力されるデータの最終部分だけを気にします。ここで、プロセス中にビューを更新する必要があります。最初の Observable がデータを発行するとき、UI にテキスト行を表示する必要があります。

最初のObservable 内で 2 番目の Observable を呼び出して、2 回の呼び出しに分割できることはわかっていますがonNext()、それは面倒です。

その道をたどらずに、どうすれば上で説明したことを達成できますか? ありがとう

4

1 に答える 1

2

doOnNext()を使用した古いプロジェクトの例を次に示します。

API.getVideoListObservable()
                .doOnError(t -> t.printStackTrace())
                .map(r -> r.getObjects())
                .doOnNext(l -> VideoActivity.this.runOnUiThread(() -> fragment.updateVideoList(l)))
                .doOnNext(l -> kalturaVideoList.addAll(l))
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe();

- に注意してください。その後はいつでも.doOnNext(l -> VideoActivity.this.runOnUiThread(() -> fragment.updateVideoList(l)))使用でき、前に実行されます。flatmap()doOnNext()flatmap()

doOnNext()Simon Basléによる良い説明はこちら

doOnNext副作用用です: ストリームの中間ステップで、たとえばストリームがフィルタリングされる前に、ロギングなどの横方向の動作のためにアイテムの排出に反応 (たとえば、ログ) したいが、それでも値を下に伝播させたいストリーム。

onNextより最終的なものであり、値を消費します。

于 2015-08-09T18:20:45.333 に答える