阅读了有关协程取消的官方文档后,如果对于示例,我有以下代码:
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()
仍在进行中时调用的,并且我没有调用任何自动为我执行取消的挂起函数。
这取决于networkOperationOne
和networkOperationTwo
的挂起方式。
无论如何,他们可能在内部合作,这意味着您不必检查isActive
。
如有疑问,请投入ensureActive()
执行检查并采取相应措施。 在这种情况下,与网络请求相比,条件检查可以忽略不计,因此添加一个。