Sobes.tech
Junior — Middle

Asinxron proqramlaşdırma kontekstində async açar sözü ilə asinxron funksiyaların istifadəsi ilə launch çağırışının fərqi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Açar söz async asinxron funksiyanı elan etmək üçün istifadə olunur və Deferred və ya Job tipində obyekt qaytarır və daxili suspend funksiyalar vasitəsilə dayandırıla bilər. Belə bir funksiyanın çağırılması avtomatik olaraq işə başlamır, əvəzinə await ilə əldə edilə bilən gecikdirilmiş nəticə verir.

launch 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.