Back to questions
Иннотех
Junior — Middle
77
Чем отличается использование асинхронных функций с ключевым словом async от вызова launch в контексте асинхронного программирования?
Companies where asked
Movavi
Answer from AI
sobes.tech AI
Ключевое слово async используется для объявления асинхронной функции, которая возвращает объект типа Deferred или Job и может быть приостановлена с помощью suspend функций внутри. Вызов такой функции не запускает её выполнение автоматически, а возвращает отложенный результат, который можно получить с помощью await.
launch — это функция, которая запускает новую корутину и сразу начинает её выполнение. Она возвращает объект Job, который можно использовать для управления жизненным циклом корутины (например, отмены).
Пример:
suspend fun fetchData(): String {
delay(1000)
return "Data"
}
fun main() = runBlocking {
// async возвращает Deferred, выполнение начинается сразу
val deferred = async { fetchData() }
println("Doing other work")
val result = deferred.await() // ждем результат
println(result)
// launch запускает корутину, но не возвращает результат
val job = launch {
val data = fetchData()
println(data)
}
job.join() // ждем завершения
}
Итого:
asyncиспользуется для запуска асинхронной операции с возвращаемым результатом.launchзапускает корутину без возвращаемого значения, для фоновых задач.asyncвозвращаетDeferred,launch—Job.