Sobes.tech
Middle

Kotlin'da launch va async/await o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

launch korutinasini ishga tushiradi, u ishni bajaradi va natijani qaytarmaydi. Bu blokirovchi kutishni talab qilmaydigan vazifalar uchun mo'ljallangan.

async korutinasini ishga tushiradi, u ishni bajaradi va Deferred<T> turidagi natijani qaytaradi. Natijani olish uchun await() ishlatiladi, bu hozirgi korutinaning asinxron vazifa tugaguncha to'xtashini ta'minlaydi. async/await asinxron operatsiyaning natijasini olish zarur bo'lsa ishlatiladi.

Foydalanish misoli:

// launch - hech qanday natija bilan
fun doSomethingAsync() = GlobalScope.launch {
    delay(1000)
    println("Ish bajarildi")
}

// async/await - natija bilan
suspend fun calculateSomethingAsync(): Int = GlobalScope.async {
    delay(1000)
    42
}.await()

suspend fun main() {
    doSomethingAsync()

    val result = calculateSomethingAsync()
    println("Natija: $result")
}

Farqlar jadvali:

Xususiyat launch async/await
Qaytish turi Job Deferred<T>
Kutish Bloklamaydi (fire and forget) Natijani kutish uchun await() talab qilinadi
Foydalanish Natija qaytarmaydigan vazifalarni boshlash uchun Natijasi keyingi logika uchun zarur bo'lgan vazifalarni boshlash uchun
Xatoliklarni boshqarish CoroutineExceptionHandler orqali await() chaqirilganda try-catch orqali