链可完成为可观察流

Adi*_*i B 11 rx-java rx-kotlin rx-java2 rx-kotlin2

假设您要在Observable链中插入Completable,例如对于每个发出的元素,有一个可运行的块并在其完成之前阻塞,您会选择哪个选项?(这里Completable.complete()只是举个例子)

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

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

  3. 别的什么?

Ank*_*mar 9

.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
Run Code Online (Sandbox Code Playgroud)


ESa*_*ala 4

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

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

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