Junior — Middle
Асинхрон программалоо контекстинде async ачкыч сөзү менен асинхрондуу функцияларды колдонуу менен launch чакыруусу арасындагы айырма эмнеде?
sobes.tech AI
AIден жооп
async anahtar sözü, içindəki suspend funksiyalar vasitəsilə dayandırıla bilən, Deferred və ya Job tipində obyekt qaytaran asinxron funksiyanı elan etmək üçün istifadə olunur. Belə bir funksiyanın çağırılması avtomatik olaraq başlamır, əvəzinə await ilə əldə edilə bilən gecikdirilmiş nəticəni qaytarır.
launch isə yeni korutina başlatan və dərhal onun icrasına başlayan funksiyadır. Bu, korutinanın həyat dövrünü idarə etmək üçün istifadə edilə bilən Job obyektini qaytarır (məsələn, ləğv etmək üçün).
Nümunə:
suspend fun fetchData(): String {
delay(1000)
return "Məlumat"
}
fun main() = runBlocking {
// async, Deferred qaytarır, icra dərhal başlayır
val deferred = async { fetchData() }
println("Başqa iş görür")
val result = deferred.await() // nəticəni gözləyir
println(result)
// launch, korutina başlatır, amma nəticə qaytarmır
val job = launch {
val data = fetchData()
println(data)
}
job.join() // tamamlanmasını gözləyir
}
Xülasə:
asyncasinxron əməliyyatı başlatmaq üçün istifadə olunur.launcharxa plan tapşırıqları üçün nəticəsiz korutina başlatır.asyncDeferred,launchisəJobqaytarır.