Comment fonctionnent les constructions async et await dans le langage de programmation utilisé pour le développement d'applications Android?
sobes.tech IA
Réponse de l'IA
En Kotlin, utilisé pour le développement Android, async et await sont des fonctions de la bibliothèque de coroutines. Ce ne sont pas des mots-clés du langage, comme dans certains autres langages.
async lance une nouvelle coroutine en arrière-plan et retourne un objet de type Deferred, qui représente le résultat de l'exécution dans le futur. La coroutine qui a appelé async continue son travail sans attendre la fin de l'opération asynchrone lancée.
await est une fonction suspending appelée sur un objet Deferred. Elle suspend l'exécution de la coroutine en cours jusqu'à ce que l'opération asynchrone lancée avec async se termine et retourne son résultat. Si le résultat est déjà disponible, await le retourne immédiatement.
Syntaxe:
import kotlinx.coroutines.*
suspend fun fetchUserData(): String {
// Simulation d'une opération longue
delay(1000)
return "Données utilisateur"
}
suspend fun processData(data: String): String {
// Simulation d'une autre opération longue
delay(2000)
return "Traité: $data"
}
suspend fun main() {
val deferredData = CoroutineScope(Dispatchers.IO).async {
// Récupération asynchrone des données
fetchUserData()
}
// On peut effectuer d'autres travaux pendant que les données se chargent
val data = deferredData.await() // Attend la fin de fetchUserData()
val processedResult = withContext(Dispatchers.Default) {
// Traiter les données, peut-être sur un autre thread
processData(data)
}
println(processedResult) // Affichera "Traité: Données utilisateur" après les délais
}
Points clés:
asyncretourneDeferred, qui est une "promesse" du résultat.awaitest une fonction suspending qui suspend la coroutine appelante.- Utilisé dans le contexte des coroutines pour des opérations asynchrones non bloquantes.
- Permet d'exécuter plusieurs tâches asynchrones en parallèle et de rassembler leurs résultats.