将Chain Completable转换为Observable流

18

假设您想在Observable链中插入一个Completable,例如对于每个发出的元素,都有一个Completable运行并阻塞直到其完成,您会选择哪个选项?(这里的Completable.complete()只是为了举例)

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

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

  3. 其他方法?

2个回答

25
.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

4
在选项2中,由于blockingAwait()不受可观察流程管理,您将失去取消完成的能力。
如果您不需要返回已发出的元素,则还可以使用flatMapCompletable
如果您需要执行completable但还要返回已发出的元素,则我会选择选项1。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接