Junior — Middle
Дар кадом маъно SupervisorJob аз Job оддӣ дар контексти корутинҳо ва идоракунии вазифаҳо фарқ мекунад?
sobes.tech AI
Ҷавоб аз AI
Дар Kotlin, Job дар корутинҳо намояндагии вазифаест, ки метавонад бекор карда шавад ва дар ҳиёрархияи корутинҳо пайгирӣ мешавад. SupervisorJob навъи махсуси Job мебошад, ки дар рафтор дар ҳолати истисноҳо дар корутинҳои кӯдакон фарқ мекунад.
Фарқи асосӣ:
- Job: Агар яке аз корутинҳои кӯдакон бо хато анҷом ёд, ин хато тамоми
Job-и падар ва ҳамаи корутинҳои кӯдакии дигарро бекор мекунад. - SupervisorJob: Хатое дар як корутин кӯдак наметавонад дигар корутинҳои кӯдакиро ё
Job-и падарро бекор кунад. Ин имкон медиҳад, ки хатогиҳоро ҷудо ва иҷрои дигар вазифаҳоро идома диҳад.
Масалан:
val supervisor = SupervisorJob()
val scope = CoroutineScope(Dispatchers.Default + supervisor)
scope.launch {
launch {
// Ин корутин бо истиснои хато хоҳад кард
throw Exception("Хатои дар корутин кӯдак")
}
launch {
// Ин корутин бо вуҷуди хато дар дигар корутин идома хоҳад дод
delay(1000)
println("Иҷро идома дорад")
}
}
Истифодаи SupervisorJob қулай аст, вақте ки мехоҳед, ки нокомии як вазифа ба иҷрои дигар вазифаҳои параллел таъсир нарасонад.