kotlin coroutineScope先启动后启动

qxgroojn  于 2022-11-16  发布在  Kotlin
关注(0)|答案(1)|浏览(169)

我在研究协程,写了一些例子,我发现了一些奇怪的事情。即使我先写了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
 */
}
yv5phkfx

yv5phkfx1#

launch块不会立即执行。它被安排为异步执行,函数会立即返回。这就是为什么“Start”不会立即输出,而控件会在coroutineScope中移动。您可以通过一个简单的示例来验证这一点:

launch {
    println("Start")
}
println("End")

在这里,您将看到EndStart之前打印

相关问题