Sobes.tech
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.