observable1
.filter { ... }
.flatMap { observable2 }
.doFinally { }
如果我的上游observable1完成,observable2仍然在争吵,我的doFinally没有被呼叫
当上游完成时,如何使Observable2完成?
//工作示例
Observable.just(1)
.doOnComplete(() -> Log.d("Default", "upstream completed"))
.flatMap(__ -> Observable.interval(0, 1, TimeUnit.SECONDS))
.subscribe(
__ -> Log.d("Default", "onNext"),
t -> Log.d("Default", "onError"),
() -> Log.d("Default", "onComplete"));
答案 0 :(得分:0)
doFinally
和takeUntil
的组合似乎可以正常工作-可能是通过其他方式来做同一件事,尽管不确定您的用例,但这样做似乎有些奇怪:< / p>
var boolean = false
Observable.just(1, 2, 3, 4, 5, 6, 7, 8)
.subscribeOn(Schedulers.from(schedulerA))
.doFinally { println("Do Finally before flatMap"); boolean = true }
.observeOn(Schedulers.from(schedulerB))
.flatMap { Observable.just(it) }
.takeUntil { boolean }
.subscribe { println(it) }