如果我扩展 Observable<>
在 RxJava 中,我可以覆盖 OnDispose()
,并执行清理,例如清理垃圾收集器的东西。OnDispose()
每当订阅此 Observable<>
时都会调用被处置。
但是,我似乎找不到任何与协程 channel 等效的东西。
我知道 channel.close(),但这不一样。
有什么方法可以传播吗
最佳答案
我假设你在谈论 doOnDispose
在 RxJava 中。在这种情况下,您将元素发送到 channel 并想知道下游何时有 cancelled这个 channel 。如果你在一个函数中构建你的生产代码,那么你可以简单地使用 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!
}
}
如果您的发送代码分散并且您希望收到取消回调,那么您可以使用 SendChannel.invokeOnClose
关于kotlin - 是否有与 RxJava 的 onDispose 等效的 Kotlin Coroutines Channel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57055005/