Junior — Middle
Kako će završetak podređene korutine uticati na roditeljski scope u asinhronim operacijama?
sobes.tech АИ
Одговор од АИ
U Kotlin Coroutines, deteta korutina nasleđuje kontekst roditeljske korutine, uključujući njen scope. Ako deteta korutina završi sa greškom, ta greška se podrazumevano propagira na viši nivo i otkazuje scope roditelja zajedno sa svim njegovim detetovim korutinama. Ovo obezbeđuje strukturiranu konkurenciju i sprečava curenje resursa.
Ako deteta korutina završi uspešno, to uopšte ne utiče na scope roditelja — on nastavlja da radi.
Primer:
val parentJob = CoroutineScope(Dispatchers.Default).launch {
val child = launch {
throw Exception("Greška u detetovoj korutini")
}
child.join()
}
// parentJob će takođe biti otkazan zbog greške u child
Da biste izbegli otkazivanje roditelja usled grešaka u detetovim korutinama, možete koristiti SupervisorJob, koji izoluje greške detetovih korutina.