【发布时间】:2019-09-30 08:26:37
【问题描述】:
我使用了一个 PublishSubject,我正在向它发送消息,同时我也在监听结果。它完美无缺,但现在我不确定如何使用 Kotlin 的协程(流或通道)做同样的事情。
private val subject = PublishProcessor.create<Boolean>>()
...
fun someMethod(b: Boolean) {
subject.onNext(b)
}
fun observe() {
subject.debounce(500, TimeUnit.MILLISECONDS)
.subscribe { /* value received */ }
}
由于我需要 debounce 运算符,我真的很想对流做同样的事情,所以我创建了一个通道,然后我尝试从该通道创建一个流并监听变化,但我没有得到任何结果。
private val channel = Channel<Boolean>()
...
fun someMethod(b: Boolean) {
channel.send(b)
}
fun observe() {
flow {
channel.consumeEach { value ->
emit(value)
}
}.debounce(500, TimeUnit.MILLISECONDS)
.onEach {
// value received
}
}
怎么了?
【问题讨论】:
标签: android kotlin rx-java kotlin-coroutines