Sobes.tech
Back to questions
Junior — Middle
63

Какими способами можно определить, что выполнение корутины завершено?

Answer from AI

sobes.tech AI

Определить, что корутина завершила выполнение, можно несколькими способами:

  1. Использование Job — корутина возвращает объект Job, у которого есть свойство isCompleted. Если оно равно true, значит корутина завершена.
val job = launch {
    // код корутины
}

// Проверка
if (job.isCompleted) {
    println("Корутина завершена")
}
  1. Использование join() — можно вызвать job.join(), чтобы приостановить текущий поток до завершения корутины.

  2. Использование invokeOnCompletion — можно зарегистрировать обработчик, который вызовется при завершении корутины.

job.invokeOnCompletion { throwable ->
    if (throwable == null) {
        println("Корутина успешно завершена")
    } else {
        println("Корутина завершилась с ошибкой: $throwable")
    }
}
  1. Для функций с async — можно получить результат через await(), который завершится, когда корутина выполнится.