我在研究协程,写了一些例子,我发现了一些奇怪的事情。即使我先写了launch
build,它也比协程开始得晚。我知道协程有一个暂停点。有人解释一下吗?
下面是我的代码
import kotlinx.coroutines.*
fun main() = runBlocking {
launch {
println("Start")
}
coroutineScope {
launch {
delay(1000)
println("World!")
}
println("Hello")
}
println("Done")
/*
expected
Start
Hello
World!
Done
result
Hello
Start
World!
Done
*/
}
1条答案
按热度按时间yv5phkfx1#
launch
块不会立即执行。它被安排为异步执行,函数会立即返回。这就是为什么“Start”不会立即输出,而控件会在coroutineScope
中移动。您可以通过一个简单的示例来验证这一点:在这里,您将看到
End
在Start
之前打印