Middle
Cum funcționează construcțiile async și await în limbajul de programare utilizat pentru dezvoltarea aplicațiilor Android?
sobes.tech AI
Răspuns de la AI
În Kotlin, utilizat pentru dezvoltarea Android, async și await sunt funcții din biblioteca de corutine. Nu sunt cuvinte cheie ale limbajului, ca în unele alte limbaje.
async pornește o nouă corutină în fundal și returnează un obiect de tip Deferred, care reprezintă rezultatul execuției în viitor. Corutina care a apelat async își continuă munca fără a aștepta finalizarea operației asincrone lansate.
await este o funcție suspending care se apelează pe un obiect Deferred. Ea suspendă execuția corutinei curente până când operația asincronă lansată cu async se încheie și returnează rezultatul său. Dacă rezultatul este deja disponibil, await îl returnează imediat.
Sintaxă:
import kotlinx.coroutines.*
suspend fun fetchUserData(): String {
// Simulare a unei operații lungi
delay(1000)
return "Datele utilizatorului"
}
suspend fun processData(data: String): String {
// Simulare a unei alte operații lungi
delay(2000)
return "Procesat: $data"
}
suspend fun main() {
val deferredData = CoroutineScope(Dispatchers.IO).async {
// Obține datele asincron
fetchUserData()
}
// Putem face altă muncă în timp ce datele se încarcă
val data = deferredData.await() // Așteaptă finalizarea fetchUserData()
val processedResult = withContext(Dispatchers.Default) {
// Procesează datele, posibil pe un alt fir
processData(data)
}
println(processedResult) // Va afișa "Procesat: Datele utilizatorului" după întârzieri
}
Puncte cheie:
asyncreturneazăDeferred, care este o "promisiune" a rezultatului.awaiteste o funcție suspending care suspendă corutina apelantă.- Folosit în contextul corutinelor pentru operații asincrone non-blocante.
- Permite executarea mai multor sarcini asincrone în paralel și colectarea rezultatelor lor.