Sobes.tech
Middle

Kā darbojas konstrukcijas async un await Android lietojumprogrammu izstrādes programmēšanas valodā?

sobes.tech AI

Atbilde no AI

Kotlin, kas tiek Android izstrādei, async un await ir korutīnu bibliotēkas funkcijas. Tie nav valodas atslēgvārdi, kā dažās citās valodās.

async sāk jaunu korutīnu fonā un atgriež Deferred tipu objektu, kas pārstāv nākotnes izpildes rezultātu. async izsauktais korutīns turpina savu darbu, nesagaidot sākto asinhrono operāciju pabeigšanu.

await ir suspending funkcija, kas izsaukta uz Deferred objektu. Tā pārtrauc pašreizējo korutīnu līdz brīdim, kad async uzsākta asinhronā operācija beigsies un atgriezīs savu rezultātu. Ja rezultāts jau ir pieejams, await to nekavējoties atgriež.

Sintakse:

import kotlinx.coroutines.*

suspend fun fetchUserData(): String {
    // Ilgas operācijas imitācija
    delay(1000)
    return "User Data"
}

suspend fun processData(data: String): String {
    // Citas ilgas operācijas imitācija
    delay(2000)
    return "Processed: $data"
}

suspend fun main() {
    val deferredData = CoroutineScope(Dispatchers.IO).async {
        // Saņemt datus asinhroni
        fetchUserData()
    }

    // Var veikt citu darbu, kamēr dati tiek ielādēti

    val data = deferredData.await() // Gaidām fetchUserData() pabeigšanu

    val processedResult = withContext(Dispatchers.Default) {
        // Apstrādājam datus, iespējams, citā pavedienā
        processData(data)
    }

    println(processedResult) // Izvadīs "Processed: User Data" pēc aizkavēšanās
}

Galvenie punkti:

  • async atgriež Deferred, kas ir "solījums" rezultātam.
  • await ir suspending funkcija un pārtrauc izsaukto korutīnu.
  • Izmanto korutīnu kontekstā, lai veiktu neblokējošas asinhronas operācijas.
  • Ļauj vienlaikus veikt vairākas asinhronas uzdevumus un savākt to rezultātus.