如何防止 "onComplete" 上的 Rxjava 主题?
How to prevent Rxjava Subject on "onComplete"?
我需要一个忽略 onComplete()
的 RxJava 主题,所以即使我使用 RxRelay,它仍然调用 onComplete :(
private val mDisposables = CompositeDisposable()
private val mRelay: BehaviorRelay<Boolean> = BehaviorRelay.createDefault(true)
....
mDisposables += mRelay
.observeOn(io)
.throttleLatest(5, SECONDS)
.flatMap { ... }
.zipWith(...)
.switchMap {...}
.subscribeOn(io)
.subscribeWith(object : DisposableObserver<UiData>() {
override fun onComplete() {
Timber.d("COMPLETED")
}
override fun onNext(it: UiData) {
Timber.d(it.toString())
}
override fun onError(e: Throwable) {
Timber.e(e)
}
})
}
为什么总是onComplete
打电话?
可能是您对 .zipWith
的使用将流限制为最短的参与者,无论其他流是否结束。
我意识到 .zipWith()
中断了流。最后我用 .flatMap()
替换了 .zipWith()
.
感谢@Kiskae
我需要一个忽略 onComplete()
的 RxJava 主题,所以即使我使用 RxRelay,它仍然调用 onComplete :(
private val mDisposables = CompositeDisposable()
private val mRelay: BehaviorRelay<Boolean> = BehaviorRelay.createDefault(true)
....
mDisposables += mRelay
.observeOn(io)
.throttleLatest(5, SECONDS)
.flatMap { ... }
.zipWith(...)
.switchMap {...}
.subscribeOn(io)
.subscribeWith(object : DisposableObserver<UiData>() {
override fun onComplete() {
Timber.d("COMPLETED")
}
override fun onNext(it: UiData) {
Timber.d(it.toString())
}
override fun onError(e: Throwable) {
Timber.e(e)
}
})
}
为什么总是onComplete
打电话?
可能是您对 .zipWith
的使用将流限制为最短的参与者,无论其他流是否结束。
我意识到 .zipWith()
中断了流。最后我用 .flatMap()
替换了 .zipWith()
.
感谢@Kiskae