Ответ
coroutineScope автоматически отменяет все дочерние корутины при отмене родительской корутины благодаря иерархической структуре. Когда родительская корутина отменяется, она распространяет CancellationException на все дочерние корутины внутри coroutineScope.
Пример:
coroutineScope {
launch {
try {
delay(1000)
} catch (e: CancellationException) {
println("Child cancelled") // Будет вызвано при отмене
}
}
throw CancellationException() // Отменяем родительскую корутину
}
Ключевые моменты:
coroutineScopeсоздает область видимости с общимJob- Отмена родителя приводит к автоматической отмене всех детей
- Дочерние корутины получают
CancellationExceptionпри отмене