[英]Coroutine combined Job is not completed
從啟動獲得工作時,工作正確完成
fun testCoroutineScope() = runBlocking {
val scope = CoroutineScope(Dispatchers.Default)
val job = scope.launch {
delay(200)
println("Job done")
}
delay(500)
println(job.isCompleted)
}
Output:
Job done
true
但是,當您合並自己的工作時,情況並非如此。
fun testCoroutineScope() = runBlocking {
var job = Job()
val scope = CoroutineScope(Dispatchers.Default + job)
scope.launch {
delay(200)
println("Job done")
}
delay(500)
println(job.isCompleted)
}
Output:
Job done
false
看起來這項工作永遠不會完成。 這是為什么?
scope.launch
創建一個新作業。 當您執行Dispatchers.Default + job
時,您不會將您的工作傳遞給 scope。 您正在創建一個新的CoroutineContext
,它結合了job
和Dispatchers.Default
的元素。 文字作業 object 本身不會傳遞給新上下文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.