Как дождаться выполнения корутины созданной с помощью launch

«Как дождаться выполнения корутины созданной с помощью launch» — вопрос из категории Coroutines и Flow, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Kotlin можно дождаться завершения корутины несколькими способами:

  1. Использование join():
val job = launch {
    // какой-то код
}
job.join() // ждем завершения
  1. Использование runBlocking (для тестов или main-функций):
runBlocking {
    launch {
        // какой-то код
    }
    // автоматическое ожидание всех корутин внутри блока
}
  1. Для нескольких корутин - joinAll():
val job1 = launch { /* ... */ }
val job2 = launch { /* ... */ }
joinAll(job1, job2)

Важно: join() - suspend-функция, поэтому должна вызываться из корутины или другого suspend-контекста. Не используйте join() в UI-потоке без runBlocking, это приведет к ANR. Для UI лучше использовать async/await или колбэки.