Junior — Middle
Ako implementovať funkčnosť podobnú SupervisorJob bez jej zavedenia?
sobes.tech AI
Odpoveď od AI
SupervisorJob v Kotlin Coroutines umožňuje, aby podriadené korutiny fungovali nezávisle: chyba v jednej ne zruší ostatné. Aby ste implementovali podobné správanie bez SupervisorJob, môžete ručne spravovať životný cyklus korútin a spracovávať výnimky tak, aby ne spôsobovali zrušenie rodičovskej korutiny.
Príklad:
val parentJob = Job()
fun launchIndependentCoroutine(scope: CoroutineScope, block: suspend () -> Unit) {
scope.launch(parentJob) {
try {
block()
} catch (e: Throwable) {
// Spracovanie chyby, aby nezrušilo parentJob
println("Chyba v detskej korutine: ${e.message}")
}
}
}
// Použitie
launchIndependentCoroutine(CoroutineScope(Dispatchers.Default)) {
// kód korutiny
}
Týmto spôsobom chyby v detských korutinách nebudú rušiť rodičovský Job, čo imituje správanie SupervisorJob.