【问题标题】:Kotlin coroutines cooperative cancelation explanationKotlin协程协同取消解释
【发布时间】:2020-06-04 05:12:07
【问题描述】:

在阅读了官方docs关于协程取消后,如果我有以下代码:

val job = scope.launch { 

    val userId = networkOperationOne()

    //check if coroutine is still active before calling operation two?

    val userDetails = networkOperationTwo(userId)
}

在调用网络呼叫二之前我应该​​检查isActive 吗?

假设在networkOperationOne() 仍在进行中时调用了job.cancel(),并且我没有调用任何自动为我取消的挂起函数。

【问题讨论】:

  • 我的回答不能解决你的问题吗?

标签: kotlin-coroutines


【解决方案1】:

这取决于networkOperationOnenetworkOperationTwo 的挂起方式。

无论如何,他们可能在内部是合作的,这意味着您不必检查isActive

如有疑问,请输入ensureActive() 进行检查并采取相应措施。 在这种情况下,条件检查与网络请求相比可以忽略不计,因此请添加一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-04
    • 2021-10-02
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2020-03-23
    • 2019-12-06
    相关资源
    最近更新 更多