Middle
Ako fungujú konštrukcie async a await v programovacom jazyku používanom na vývoj aplikácií pre Android?
sobes.tech AI
Odpoveď od AI
V Kotlin, ktorý sa používa na vývoj Androidu, sú async a await funkcie z knižnice korutín. Nie sú to kľúčové slová jazyka, ako v niektorých iných jazykoch.
async spustí novú korutínu na pozadí a vráti objekt typu Deferred, ktorý predstavuje výsledok vykonania v budúcnosti. Korutína, ktorá volala async, pokračuje vo svojej práci bez čakania na dokončenie spustenej asynchrónnej operácie.
await je suspending funkcia, ktorá sa volá na objekte Deferred. Pozastaví vykonávanie aktuálnej korutiny, kým sa asynchrónna operácia spustená pomocou async nedokončí a nevráti svoj výsledok. Ak je výsledok už dostupný, await ho okamžite vráti.
Syntax:
import kotlinx.coroutines.*
suspend fun fetchUserData(): String {
// Simulácia dlhého procesu
delay(1000)
return "Údaje používateľa"
}
suspend fun processData(data: String): String {
// Simulácia iného dlhého procesu
delay(2000)
return "Spracované: $data"
}
suspend fun main() {
val deferredData = CoroutineScope(Dispatchers.IO).async {
// Asynchrónne získavanie dát
fetchUserData()
}
// Môžeme vykonávať inú prácu, kým sa načítavajú dáta
val data = deferredData.await() // Čaká na dokončenie fetchUserData()
val processedResult = withContext(Dispatchers.Default) {
// Spracovanie dát, pravdepodobne na inom vlákne
processData(data)
}
println(processedResult) // Vytlačí "Spracované: Údaje používateľa" po oneskoreniach
}
Hlavné body:
asyncvraciaDeferred, čo je "sľub" výsledku.awaitje suspending funkcia, ktorá pozastaví volajúcu korutinu.- Používa sa v kontexte korutín pre neblokujúce asynchrónne operácie.
- Umožňuje spúšťanie viacerých asynchrónnych úloh paralelne a zber ich výsledkov.