Junior — Middle
Как разпознава coroutineScope, че неговите корутини са отменени?
sobes.tech AI
Отговор от AI
coroutineScope в Kotlin корутините открива отмяната на своите дъщерни корутини чрез механизма за отмяна на контекста на корутината. Ако една от корутините вътре в coroutineScope бъде отменена (например, поради изключение или явна отмяна), цялата coroutineScope получава сигнал за отмяна.
Това се случва, защото всички корутини вътре в coroutineScope наследяват общ CoroutineContext, който съдържа Job. Когато този Job бъде отменен, всички дъщерни корутини също се отменят.
По този начин, coroutineScope следи състоянието на своите дъщерни корутини чрез общия контекст и реагира на тяхната отмяна, прекъсвайки изпълнението и хвърляйки изключение CancellationException, ако е необходимо.
Пример:
suspend fun пример() = coroutineScope {
val job = launch {
// някаква работа
delay(1000)
}
delay(500)
job.cancel() // отменяме дъщерната корутина
// coroutineScope ще открие отмяната и ще се прекъсне
}