Sobes.tech
Назад к вопросам
Junior — Middle
72

Можете объяснить различия между функциями launch и async при использовании Coroutine Builder в Kotlin?

Компании, где спрашивали
Effective Mobile

Ответ от нейросети

sobes.tech AI

В Kotlin при работе с корутинами launch и async — это Coroutine Builders, но они имеют разные цели:

  • launch запускает корутину, которая выполняется асинхронно и не возвращает результат. Она используется для выполнения задач, где результат не нужен, например, для побочных эффектов.

  • async запускает корутину, которая возвращает Deferred<T> — отложенный результат, который можно получить с помощью await(). Используется, когда нужно получить результат асинхронной операции.

Пример:

val job = scope.launch {
    // выполняется асинхронно, результат не возвращается
}

val deferred = scope.async {
    // выполняется асинхронно, возвращает результат
    return@async 42
}

runBlocking {
    val result = deferred.await() // получаем результат
    println(result) // 42
}

Итого, launch — для запуска задач без результата, async — для запуска задач с результатом.