Sobes.tech
Middle

Kotlin-də launch və async/await arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

launch korutinasını işə salır, bu da işi yerinə yetirir və nəticə qaytarmır. Bu, bloklayıcı gözləmə tələb etməyən tapşırıqlar üçün nəzərdə tutulmuşdur.

async korutinasını işə salır, bu da işi yerinə yetirir və Deferred<T> tipində nəticə qaytarır. Nəticəni almaq üçün await() istifadə olunur, bu da cari korutinanı asinxron tapşırıq tamamlanana qədər dayandırır. async/await asinxron əməliyyatın nəticəsini almaq lazım olduqda istifadə olunur.

İstifadə nümunəsi:

// launch - geri dönüş dəyəri olmadan
fun doSomethingAsync() = GlobalScope.launch {
    delay(1000)
    println("İş tamamlandı")
}

// async/await - geri dönüş dəyəri ilə
suspend fun calculateSomethingAsync(): Int = GlobalScope.async {
    delay(1000)
    42
}.await()

suspend fun main() {
    doSomethingAsync()

    val result = calculateSomethingAsync()
    println("Nəticə: $result")
}

Fərqlərin ümumi cədvəli:

Xüsusiyyət launch async/await
Geri dönüş tipi Job Deferred<T>
Gözləmə Bloklamır (fire and forget) Nəticə üçün await() tələb edir
İstifadə Nəticə tələb etməyən tapşırıqları başlatmaq üçün Nəticəsi lazım olan tapşırıqları başlatmaq üçün
Xətaların idarə olunması CoroutineExceptionHandler vasitəsilə await() çağırışında try-catch ilə