Kotlin 是否存在与RxJava';那是什么?

Kotlin 是否存在与RxJava';那是什么?,kotlin,rx-java,kotlin-coroutines,kotlinx.coroutines.channels,Kotlin,Rx Java,Kotlin Coroutines,Kotlinx.coroutines.channels,如果我在RxJava中扩展了一个可观察的,我就可以覆盖OnDispose(),并执行清理,比如为垃圾收集器清理东西 每当处理对此可观察的的任何订阅时,都会调用OnDispose() 然而,我似乎找不到任何与协同程序通道等效的东西 我知道channel.close(),但这不一样 有什么方法可以传播吗 暂停对信道的协同路由取消;或 频道的订阅处理/取消 我想你在说RxJava中的doOnDispose。在本例中,您将向通道发送元素,并希望知道下游何时拥有通道。如果在单个函数中构造生成代码,则只需

如果我在RxJava中扩展了一个
可观察的
,我就可以覆盖
OnDispose()
,并执行清理,比如为垃圾收集器清理东西

每当处理对此
可观察的
的任何订阅时,都会调用
OnDispose()

然而,我似乎找不到任何与协同程序通道等效的东西

我知道channel.close(),但这不一样

有什么方法可以传播吗

  • 暂停对信道的协同路由取消;或
  • 频道的订阅处理/取消

我想你在说RxJava中的
doOnDispose
。在本例中,您将向通道发送元素,并希望知道下游何时拥有通道。如果在单个函数中构造生成代码,则只需使用
try/finally

val channel = produce { 
    // channel producing code is here
    try {
        // this example is sending 10 ints, but it can be any other code
        repeat(10) { send(it) }
    } finally {
        // doOnDispose here!
    }
}

如果您的发送代码分散,并且您希望收到取消回调,那么您可以使用

谢谢您的回答,但恐怕我指的是dispose(),而不是doOnDispose()。我找不到文档,但您可以看到它在这里被覆盖:该链接还显示了一个与我类似的用例。这似乎是以类似的方式运作的,但不是以我期望的方式。一旦我有了可复制的代码,我可能会记录一个新问题