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

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

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

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку