Junior — Middle
Ako ovplyvní dokončenie podriadeného korutín rodičovský scope v asynchrónnych operáciách?
sobes.tech AI
Odpoveď od AI
V Kotlin Coroutines, detská korutina dedí kontext rodičovskej korutiny, vrátane jej scope. Ak sa detská korutina ukončí chybou, táto chyba sa predvolene šíri nahor a zruší scope rodiča spolu so všetkými jeho deťmi korutinami. To zabezpečuje štruktúrovanú konkurenciu a zabraňuje únikom zdrojov.
Ak sa detská korutina ukončí úspešne, nemá to žiadny vplyv na scope rodiča — ten pokračuje v práci.
Príklad:
val parentJob = CoroutineScope(Dispatchers.Default).launch {
val child = launch {
throw Exception("Chyba v detskej korutine")
}
child.join()
}
// parentJob bude tiež zrušený kvôli chybe v child
Ak chcete zabrániť zrušeniu rodiča pri chybách v detských korutinách, môžete použiť SupervisorJob, ktorý izoluje chyby detských korutín.