Sobes.tech
Middle

Android ilovalarini ishlab chiqishda ishlatiladigan dasturlash tilida async va await tuzilmalari qanday ishlaydi?

sobes.tech AI

AIdan javob

Kotlin'da, Android dasturlash uchun ishlatiladigan, async va await korutinlar kutubxonasidan funksiyalardir. Ular tilning kalit so'zlari emas, ba'zi boshqa tillarda bo'lgani kabi.

async yangi korutinani fon rejimida ishga tushiradi va Deferred turidagi ob'ektni qaytaradi, bu kelajakda bajariladigan natijani ifodalaydi. async chaqirgan korutina o'z ishini davom ettiradi, boshlagan asinxron operatsiyaning yakunlanishini kutmay.

await Deferred ob'ekti ustida chaqiriladigan suspending funksiyadir. U joriy korutinaning bajarilishini to'xtatadi, async yordamida boshlagan asinxron operatsiya yakunlangach va natija qaytarilgach. Agar natija allaqachon mavjud bo'lsa, await uni darhol qaytaradi.

Sintaksis:

import kotlinx.coroutines.*

suspend fun fetchUserData(): String {
    // Uzun operatsiyaning simulyatsiyasi
    delay(1000)
    return "Foydalanuvchi ma'lumotlari"
}

suspend fun processData(data: String): String {
    // Boshqa uzun operatsiyaning simulyatsiyasi
    delay(2000)
    return "Qayta ishlangan: $data"
}

suspend fun main() {
    val deferredData = CoroutineScope(Dispatchers.IO).async {
        // Asinxron ma'lumotlarni olish
        fetchUserData()
    }

    // Ma'lumotlar yuklanayotganda boshqa ishlarni qilish mumkin

    val data = deferredData.await() // fetchUserData() yakunlanishini kutamiz

    val processedResult = withContext(Dispatchers.Default) {
        // Ma'lumotlarni qayta ishlash, ehtimol boshqa ipda
        processData(data)
    }

    println(processedResult) // "Qayta ishlangan: Foydalanuvchi ma'lumotlari" chiqaradi, kechikishlardan so'ng
}

Asosiy nuqtalar:

  • async Deferred qaytaradi, bu "va'da" natijadir.
  • await chaqiruvchi korutinaning bajarilishini to'xtatadigan suspending funksiyadir.
  • Bu korutinlar kontekstida ishlatiladi, bloklamaydigan asinxron operatsiyalar uchun.
  • Bir nechta asinxron vazifalarni parallel ravishda bajarishga va ularning natijalarini yig'ishga imkon beradi.