событий в отдельной корутине:
launch {
for (event in channel) {
try {
println("получили $event")
delay(1000)
println("обработали $event)
} catch (e: Exception) {
println("ошибка обработки $event: $cause")
}
}
}
Отправляю несколько событий, делаю cancelChildren на родительском для launch контексте. При этом для кода как в примере выше канал продолжает получать события даже после отмены и ошибка об отмене корутины возникает только когда дело доходит до delay.
Но если убрать try-catch или delay то канал перестаёт получать события после отмены. Почему так?
В чем загадка-то? Отмена происходит только в suspension point при вызове библиотечных функций
Обсуждают сегодня