Sobes.tech
Middle

Kuidas töötavad konstruktsioonid async ja await Androidi rakenduste arendamiseks kasutatavas programmeerimiskeeles?

sobes.tech AI

Vastus AI-lt

Kotlin, mida kasutatakse Android arendamiseks, async ja await on korutinite raamatukogu funktsioonid. Nad ei ole keele võtmesõnad nagu teistes keeltes.

async käivitab uue korutina taustarežiimis ja tagastab Deferred tüüpi objekti, mis esindab tulevikus täidetava tulemuse. async-i kutsunud korutina jätkab oma tööd, oodates asünkroonse operatsiooni lõppu.

await on peatav funktsioon, mis kutsutakse Deferred objekti peal. See peatab praeguse korutina kuni async-ga käivitatud asünkroonne operatsioon lõpeb ja tagastab oma tulemuse. Kui tulemus on juba saadaval, await tagastab selle kohe.

Süntaks:

import kotlinx.coroutines.*

suspend fun fetchUserData(): String {
    // Pikk operatsioon imitatsioon
    delay(1000)
    return "User Data"
}

suspend fun processData(data: String): String {
    // Teine pikk operatsioon imitatsioon
    delay(2000)
    return "Processed: $data"
}

suspend fun main() {
    val deferredData = CoroutineScope(Dispatchers.IO).async {
        // Saame andmeid asünkroonselt
        fetchUserData()
    }

    // Võime teha teist tööd, kuni andmed laaditakse

    val data = deferredData.await() // Ootame fetchUserData() lõppu

    val processedResult = withContext(Dispatchers.Default) {
        // Töötleme andmeid, võib-olla teises lõimes
        processData(data)
    }

    println(processedResult) // Väljundib "Processed: User Data" pärast viivitusi
}

Peamised punktid:

  • async tagastab Deferred, mis on "lubadus" tulemuse kohta.
  • await on peatav funktsioon ja peatab kutsuva korutina.
  • Kasutatakse korutinite kontekstis, et teha mitte-blokeerivaid asünkroonseid operatsioone.
  • Võimaldab teha mitu asünkroonset ülesannet paralleelselt ja koguda nende tulemusi.