Sobes.tech
Junior — Middle

Asinxron dasturlash kontekstida async kalit so'zi bilan asinxron funksiyalarni ishlatish va launch chaqiruvining o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Kalit so'z async asinxron funktsiyani e'lon qilish uchun ishlatiladi, u Deferred yoki Job turidagi ob'ektni qaytaradi va ichki suspend funksiyalar yordamida to'xtatilishi mumkin. Bunday funktsiyani chaqirish avtomatik ravishda ishga tushmaydi, balki await yordamida olinish mumkin bo'lgan kechiktirilgan natijani qaytaradi.

launch yangi korutina ishga tushiradigan va uni darhol bajarishni boshlaydigan funktsiya. U Job ob'ektini qaytaradi, uni korutinaning hayot aylanishini boshqarish uchun ishlatish mumkin (masalan, bekor qilish uchun).

Misol:

suspend fun fetchData(): String {
    delay(1000)
    return "Ma'lumot"
}

fun main() = runBlocking {
    // async, Deferred qaytaradi, bajarilishi darhol boshlanadi
    val deferred = async { fetchData() }
    println("Boshqa ish qilmoqda")
    val result = deferred.await() // natijani kutish
    println(result)

    // launch, korutina ishga tushiradi, lekin natija qaytarmaydi
    val job = launch {
        val data = fetchData()
        println(data)
    }
    job.join() // tugashini kutish
}

Xulosa:

  • async asinxron operatsiyani boshlash uchun ishlatiladi, natija bilan.
  • launch orqa fon vazifalari uchun natijasiz korutina boshlash.
  • async Deferred, launchJob qaytaradi.