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:
asynctagastabDeferred, mis on "lubadus" tulemuse kohta.awaiton 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.