Sobes.tech
Back to questions
Junior — Middle
89

Каким образом организовать ожидание окончания выполнения корутин в асинхронной программе?

Companies where asked
X5 DigitalX5 Digital

Answer from AI

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")
}