Sobes.tech
Junior — Middle

Kā noteikt, ka korutinas izpilde ir pabeigta?

sobes.tech AI

Atbilde no 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(), который завершится, когда корутина выполнится.