Sobes.tech
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ə:

  • async asinxron əməliyyatı başlatmaq üçün istifadə olunur.
  • launch arxa plan tapşırıqları üçün nəticəsiz korutina başlatır.
  • async Deferred, launch isə Job qaytarır.