Sobes.tech
Junior — Middle

Jak ovlivní dokončení podřízené korutiny rodičovský scope v asynchronních operacích?

sobes.tech AI

Odpověď od AI

V Kotlin Coroutines dědí dětská coroutine kontext rodičovské coroutine, včetně jejího scope. Pokud dětská coroutine skončí chybou, tato chyba se implicitně šíří vzhůru a zruší scope rodiče spolu se všemi jeho dětskými coroutine. To zajišťuje strukturovanou konkurenci a zabraňuje únikům zdrojů.

Pokud dětská coroutine skončí úspěšně, nemá to žádný vliv na scope rodiče — ten pokračuje v práci.

Příklad:

val parentJob = CoroutineScope(Dispatchers.Default).launch {
    val child = launch {
        throw Exception("Chyba v dětské coroutine")
    }
    child.join()
}

// parentJob bude také zrušen kvůli chybě v child

Chcete-li zabránit zrušení rodiče při chybách dětských coroutine, můžete použít SupervisorJob, který izoluje chyby dětských coroutine.