Junior — Middle
Asinxron dasturlash kontekstida async kalit so'zi bilan asinxron funksiyalarni ishlatish va launch chaqiruvining o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
Kalit so'z async asinxron funktsiyani e'lon qilish uchun ishlatiladi, u Deferred yoki Job turidagi ob'ektni qaytaradi va ichki suspend funksiyalar yordamida to'xtatilishi mumkin. Bunday funktsiyani chaqirish avtomatik ravishda ishga tushmaydi, balki await yordamida olinish mumkin bo'lgan kechiktirilgan natijani qaytaradi.
launch yangi korutina ishga tushiradigan va uni darhol bajarishni boshlaydigan funktsiya. U Job ob'ektini qaytaradi, uni korutinaning hayot aylanishini boshqarish uchun ishlatish mumkin (masalan, bekor qilish uchun).
Misol:
suspend fun fetchData(): String {
delay(1000)
return "Ma'lumot"
}
fun main() = runBlocking {
// async, Deferred qaytaradi, bajarilishi darhol boshlanadi
val deferred = async { fetchData() }
println("Boshqa ish qilmoqda")
val result = deferred.await() // natijani kutish
println(result)
// launch, korutina ishga tushiradi, lekin natija qaytarmaydi
val job = launch {
val data = fetchData()
println(data)
}
job.join() // tugashini kutish
}
Xulosa:
asyncasinxron operatsiyani boshlash uchun ishlatiladi, natija bilan.launchorqa fon vazifalari uchun natijasiz korutina boshlash.asyncDeferred,launch—Jobqaytaradi.