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:
asyncatgriežDeferred, kas ir "solījums" rezultātam.awaitir 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.