Junior — Middle
Фарқи истифодаи функсияҳои асинхронӣ бо калиди async аз даъвати launch дар контексти барномасозии асинхронӣ чист?
sobes.tech AI
Ҷавоб аз AI
Ключовата дума async се използва за обявяване на асинхронна функция, която връща обект от тип Deferred или Job и може да бъде спряна с вътрешни функции suspend. Обаждането на такава функция не я стартира автоматично, а връща отложен резултат, който може да бъде получен с await.
launch е функция, която стартира нова корутина и веднага започва нейното изпълнение. Тя връща обект Job, който може да се използва за управление на жизнения цикъл на корутината (например, анулиране).
Пример:
suspend fun fetchData(): String {
delay(1000)
return "Данни"
}
fun main() = runBlocking {
// async връща Deferred, изпълнението започва веднага
val deferred = async { fetchData() }
println("Правя други неща")
val result = deferred.await() // чака резултата
println(result)
// launch стартира корутина, но не връща резултат
val job = launch {
val data = fetchData()
println(data)
}
job.join() // чака завършването
}
Обобщение:
asyncсе използва за стартиране на асинхронна операция с резултат.launchстартира корутина без връщане на стойност, за фонови задачи.asyncвръщаDeferred,launch—Job.