gpt4 book ai didi

kotlin - 是否有与 RxJava 的 onDispose 等效的 Kotlin Coroutines Channel?

转载 作者:行者123 更新时间:2023-12-02 13:20:36 25 4
gpt4 key购买 nike

如果我扩展 Observable<>在 RxJava 中,我可以覆盖 OnDispose() ,并执行清理,例如清理垃圾收集器的东西。
OnDispose()每当订阅此 Observable<> 时都会调用被处置。

但是,我似乎找不到任何与协程 channel 等效的东西。

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

有什么方法可以传播吗

  • 暂停对 Channel 的协程取消;或
  • 订阅处置/取消 channel ?
  • 最佳答案

    我假设你在谈论 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com