Sobes.tech
Junior — Middle

Kan een een parent coroutine eerder eindigen dan een child coroutine die binnenin is gestart?

sobes.tech AI

Antwoord van AI

In Kotlin kan de ouder-coroutine eerder eindigen dan de kind-coroutine als de kind-coroutine in een andere context of in de globale scope wordt gestart.

Echter, als de kind-coroutine wordt gestart in de context van de ouder (bijvoorbeeld via launch in een CoroutineScope van de ouder), dan wacht de ouder-coroutine op de voltooiing van de kind-coroutines en eindigt later of gelijktijdig met hen.

Voorbeeld:

runBlocking {
    val job = launch {
        launch {
            delay(1000)
            println("Kind-coroutine voltooid")
        }
        println("Ouder-coroutine voltooid")
    }
    job.join()
}

In dit voorbeeld zal de ouder-coroutine niet eindigen voordat de kind-coroutines zijn voltooid.

Als de kind-coroutine echter wordt gestart in GlobalScope, kan de ouder-coroutine eerder eindigen.