小编may*_*yyo的帖子

发布主题与Kotlin协程(流程)

我正在尝试将一部分代码从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)

我有什么问题?

android kotlin rx-java kotlin-coroutines

7
推荐指数
3
解决办法
1295
查看次数

标签 统计

android ×1

kotlin ×1

kotlin-coroutines ×1

rx-java ×1