Что такое async в Coroutines

«Что такое async в Coroutines» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

async — это корутина-билдер, который запускает корутину параллельно и возвращает Deferred<T> (аналог Future или Promise). Deferred — это job с результатом, который можно получить через await().

Ключевые моменты:

  • Используется для параллельного выполнения задач
  • Deferred.await() приостанавливает корутину, пока результат не будет готов
  • Если в async произойдет исключение, оно будет выброшено при вызове await()

Пример:

val deferredResult = CoroutineScope(Dispatchers.IO).async {
    fetchDataFromNetwork() // Долгая операция
}
// Другая работа...
val result = deferredResult.await() // Ждем результат

Отличие от launch:

  • launch возвращает Job без результата
  • async возвращает Deferred<T> с результатом