Ответ
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>с результатом