web-dev-qa-db-ja.com

観察可能なフローに完了可能なチェーン

監視可能なチェーンにCompletableを挿入したい場合(たとえば、各放出された要素に対して)、それが完了するまで実行およびブロックするCompletableがある場合、どのオプションを選択しますか? (ここでCompletable.complete()は単なる例です)

  1. .flatMap { Completable.complete().andThen(Observable.just(it)) }

  2. .doOnNext { Completable.complete().blockingAwait() }

  3. 他に何か?

16
Adi B
.flatMapCompletable { Completable.complete().andThen(Observable.just(it)) } // If you don't want it to return
.flatMap { Completable.complete().andThen(Observable.just(it)) } //Can be used if you want it to return Observable
13
Ankit Kumar

オプション2では、blockingAwait()が監視可能なフローによって管理されていないため、完了可能オブジェクトをキャンセルする機能が失われます。

放出された要素を返す必要がない場合は、flatMapCompletableもあります。

完了可能要素を実行する必要があるが、放出された要素も返す必要がある場合は、オプション1を使用します。

4
ESala