Middle
Kaip veikia async ir await konstrukcijos programavimo kalboje, naudojamoje Android programoms kurti?
sobes.tech AI
Atsakymas iš AI
Kotlin'e, kuris naudojamas Android kūrimui, async ir await yra korutinų bibliotekos funkcijos. Jie nėra kalbos raktažodžiai kaip kai kuriose kitose kalbose.
async paleidžia naują korutiną foniniame režime ir grąžina Deferred tipo objektą, kuris atstovauja būsimą vykdymo rezultatą. async iškvietęs korutinas tęsia savo darbą, nesulaukdamas pradėtos asinchroninės operacijos pabaigos.
await yra sustabdanti funkcija, kuri iškviečiama Deferred objekte. Ji sustabdo esamą korutiną tol, kol async pradėta asinchroninė operacija nesibaigs ir negrąžins savo rezultato. Jei rezultatas jau pasiekiamas, await jį grąžina nedelsiant.
Sintaksė:
import kotlinx.coroutines.*
suspend fun fetchUserData(): String {
// Ilgos operacijos imitacija
delay(1000)
return "User Data"
}
suspend fun processData(data: String): String {
// Kitos ilgos operacijos imitacija
delay(2000)
return "Processed: $data"
}
suspend fun main() {
val deferredData = CoroutineScope(Dispatchers.IO).async {
// Gauti duomenis asinchroniškai
fetchUserData()
}
// Gali būti atliekamas kitas darbas, kol duomenys kraunasi
val data = deferredData.await() // Laukiame fetchUserData() pabaigos
val processedResult = withContext(Dispatchers.Default) {
// Apdorojame duomenis, galbūt kitame sraute
processData(data)
}
println(processedResult) // Išves "Processed: User Data" po vėlavimų
}
Pagrindiniai punktai:
asyncgrąžinaDeferred, kuris yra "žadėjimas" rezultato.awaityra sustabdanti funkcija ir sustabdo kviečiančią korutiną.- Naudojama korutinų kontekste, skirta neblokuojančioms asinchroninėms operacijoms.
- Leidžia vykdyti kelis asinchroninius užduotis vienu metu ir rinkti jų rezultatus.