Запись на курсы по HTML, CSS, JavaScript, PHP, Python, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
1299 of 1310 menu
Бесплатный тренинг по PHP: форматирование строк. Начало 25 сентября. Жми для записи!

Функция 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,
    которая приостанавливает корутину на заданное время