launch и async — это оба coroutine builders в Kotlin, но они служат разным целям в зависимости от того, нужен ли тебе результат от корутины.
launch — запусти и забудьlaunch запускает корутину, которая не возвращает результат. Он возвращает объект Job, который можно использовать для отслеживания или отмены корутины.
Используй launch, когда хочешь выполнить задачу, не заботясь о возвращаемом значении, например при записи в базу данных или логировании.
val job: Job = launch {
saveDataToDatabase()
}
async — конкурентный результатasync запускает корутину, которая вычисляет и возвращает результат. Он возвращает Deferred<T>, и ты вызываешь на нём await(), чтобы получить результат после завершения корутины.
Используй async, когда тебе нужен результат корутины, особенно при запуске нескольких задач одновременно.
val deferred: Deferred<Int> = async {
computeValue()
}
val result = deferred.await()
launch возвращает Job; async возвращает Deferred<T>launch не возвращает результат; async возвращает значение, которое получают через await()launch для задач с побочными эффектами; async для конкурентных вычислений, где нужны результатыlaunch для независимых фоновых задач, где результат не нуженasync, когда нужно запустить задачи параллельно и потом объединить их результатыСтроитель launch возвращает объект Job, который можно использовать для отслеживания или отмены корутины, а async возвращает объект Deferred<T>, из которого ты должен вызвать await() для получения вычисленного результата.
Новый — ещё не проверен сообществом
Вы