在某些情况下,如果我需要在响应流中当前显示/删除元素,则需要删除/忽略它。例如:
fun ignoreDuplicatesExample() {
val publishSubject: PublishSubject<Long> = PublishSubject.create()
publishSubject.observeOn(Schedulers.single()).distinct().subscribe({
Thread.sleep(1000)
println("onNext: $it")
}, {
error("$it")
})
publishSubject.onNext(1)
publishSubject.onNext(2)
publishSubject.onNext(3)
publishSubject.onNext(1) // should be ignored
publishSubject.onNext(2) // should be ignored
publishSubject.onNext(3) // should be ignored
Thread.sleep(10_000)
publishSubject.onNext(1) // by this time it should be already consumed, so it need to be allowed to emit it again
publishSubject.onNext(4)
Thread.sleep(10_000)
println("exit")
}
输出:
onNext: 1
onNext: 2
onNext: 3
onNext: 4
exit
但是我希望看到:
onNext: 1
onNext: 2
onNext: 3
onNext: 1
onNext: 4
exit
那么,有人知道如何使用RxJava2实现它吗?
答案 0 :(得分:0)
您不能直接做到这一点,因为无论是否“消费”上游流链都不应该知道下游。 (想象一下是否有几个订户。) 如果您想这样做,则需要与流外部的变量进行交互。