
Комментарии 3
В своей книге о корутинах я образно сравнила coroutineScope с аквариумом, в который корутины запускаются, как рыбки, а разработчик просто за ними наблюдает из обычного (синхронного) мира.
Если развить эту аналогию, то:
Обычный
coroutineScope: Это аквариум с очень строгими правилами. Если одна рыбка внезапно заболела, то воду из аквариума немедленно сливают, вместе с остальными рыбками.А
supervisorScope: Это продвинутый аквариум. Если одной рыбке стало плохо, то ее немедленно изолируют и остальные рыбки этого даже не заметят и продолжат спокойно плавать дальше, как ни в чем не бывало =)
В примере с async и supervisorScope в статье показано, как обработать ошибку через try/catch вокруг await(). А если таких async- задач несколько, и каждая может упасть - есть ли смысл использовать awaitAll(), или лучше обрабатывать каждую отдельно?
Обработка исключений в Kotlin Coroutines