16

假设你想在你的 Observable 链中插入一个 Completable,比如对于每个发射的元素,都有一个 Completable 运行并阻塞直到它完成,你会选择什么选项?(这里Completable.complete()只是举个例子)

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

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

  3. 别的东西?

4

2 回答 2

24
.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
于 2017-12-14T04:23:35.793 回答
4

在选项 2 中,您将失去取消可完成的能力,因为blockingAwait()它不受可观察流的管理。

如果您不需要返回发出的元素,还有flatMapCompletable.

如果您需要执行可完成但还返回发出的元素,那么我会选择选项 1。

于 2017-11-28T15:11:49.253 回答