Kotlin 协程协作取消解释



阅读了有关协程取消的官方文档后,如果对于示例,我有以下代码:

val job = scope.launch { 
val userId = networkOperationOne()
//check if coroutine is still active before calling operation two?
val userDetails = networkOperationTwo(userId)
}

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

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

这取决于networkOperationOnenetworkOperationTwo的挂起方式。

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

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

最新更新