Обновить

Комментарии 3

В своей книге о корутинах я образно сравнила coroutineScope с аквариумом, в который корутины запускаются, как рыбки, а разработчик просто за ними наблюдает из обычного (синхронного) мира.

Если развить эту аналогию, то:

  • Обычный coroutineScope: Это аквариум с очень строгими правилами. Если одна рыбка внезапно заболела, то воду из аквариума немедленно сливают, вместе с остальными рыбками.

  • А supervisorScope: Это продвинутый аквариум. Если одной рыбке стало плохо, то ее немедленно изолируют и остальные рыбки этого даже не заметят и продолжат спокойно плавать дальше, как ни в чем не бывало =)

В примере с async и supervisorScope в статье показано, как обработать ошибку через try/catch вокруг await(). А если таких async- задач несколько, и каждая может упасть - есть ли смысл использовать awaitAll(), или лучше обрабатывать каждую отдельно?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации