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։