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.