Назад к вопросам
X5 Digital
Junior — Middle
88
Каким образом организовать ожидание окончания выполнения корутин в асинхронной программе?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для ожидания окончания выполнения корутин в Kotlin обычно используют функцию join() у объекта Job, который возвращается при запуске корутины. Если корутина запущена через launch, то она возвращает Job, и вызов job.join() приостанавливает текущий поток до завершения корутины.
Пример:
val job = GlobalScope.launch {
// какая-то асинхронная работа
delay(1000)
println("Coroutine finished")
}
runBlocking {
job.join() // ждем завершения корутины
println("Coroutine has completed")
}
Если используется async, то для получения результата и ожидания окончания корутины применяется await().
val deferred = GlobalScope.async {
delay(1000)
return@async 42
}
runBlocking {
val result = deferred.await() // ждем и получаем результат
println("Result: $result")
}