Middle
151
questionbank

В чем отличие между launch и async/await в Kotlin?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

launch запускает корутину, которая выполняет работу и не возвращает результат. Она предназначена для выполнения задач, не требующих блокирующего ожидания завершения.

async запускает корутину, которая выполняет работу и возвращает результат типа Deferred<T>. Для получения результата используется await(), который приостанавливает текущую корутину до завершения работы асинхронной задачи. async/await используются, когда нужно получить результат из асинхронной операции.

Пример использования:

kotlin

Сводная таблица отличий:

Featurelaunchasync/await
Возвращаемый типJobDeferred<T>
ОжиданиеНе блокирует (fire and забыл)Требует await() для блокирующего ожидания результата
ИспользованиеДля запуска задач, не требующих возвращения результатаДля запуска задач, результат которых необходим для дальнейшей логики
Обработка ошибокЧерез CoroutineExceptionHandlerЧерез блок try-catch при вызове await()