Функция await
Функция await
приостанавливает выполнение корутины до получения результата
от отложенной задачи (объекта типа Deferred<T>
). При этом корутина не блокирует
поток, а освобождает его для других задач. Когда результат становится доступным,
корутина продолжает выполнение.
Импорт
import kotlinx.coroutines.*
Синтаксис
suspend fun <T> Deferred<T>.await(): T
Пример
Ожидание результата асинхронной задачи:
val deferred = GlobalScope.async {
delay(1000)
"Result"
}
val res = deferred.await()
println(res)
Результат выполнения кода:
String "Result"
Пример
Использование await
в корутине:
runBlocking {
val deferred = async {
delay(500)
42
}
val res = deferred.await()
println(res)
}
Результат выполнения кода:
Int 42
Пример
Обработка ошибок при использовании await
:
runBlocking {
val deferred = async {
delay(100)
throw RuntimeException("Error occurred")
}
try {
deferred.await()
} catch (e: Exception) {
println(e.message)
}
}
Результат выполнения кода:
String "Error occurred"
Пример
Ожидание нескольких задач:
runBlocking {
val deferred1 = async { delay(200) 1 }
val deferred2 = async { delay(100) 2 }
val res1 = deferred1.await()
val res2 = deferred2.await()
println(res1 + res2)
}
Результат выполнения кода:
Int 3
Смотрите также
-
функцию
async
,
которая создает отложенную задачу -
функцию
launch
,
которая запускает новую корутину -
функцию
withContext
,
которая выполняет блок кода в указанном контексте -
функцию
delay
,
которая приостанавливает корутину на заданное время