我正在尝试将一部分代码从RX重构为协程,但是尽管我付出了所有努力,但我仍然迷路了。
因此,我创建了PublishSubject,并且正在向其发送消息,而且还在监听结果。它可以完美地工作,但是现在我不确定如何对协程(流或通道)执行相同的操作。
private val subject = PublishProcessor.create<Boolean>>()
...
fun someMethod(b: Boolean) {
subject.onNext(b)
}
fun observe() {
subject.debounce(500, TimeUnit.MILLISECONDS)
.subscribe {
// value received
}
}
Run Code Online (Sandbox Code Playgroud)
由于我需要使用反跳运算符,因此我真的想对流执行相同的操作,因此我创建了通道,然后尝试从该通道创建流并听取更改,但是没有得到任何结果。
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
}
}
Run Code Online (Sandbox Code Playgroud)
我有什么问题?