Middle
Qu'est-ce que la fonction 'suspend' en Kotlin?
sobes.tech IA
Réponse de l'IA
La fonction suspend est une fonction qui peut être suspendue (suspend) et reprise (resume) ultérieurement. Elles constituent une partie fondamentale des coroutines en Kotlin et sont utilisées pour effectuer des opérations asynchrones sans bloquer le thread.
Caractéristiques clés :
- Ne peut être appelée que depuis une autre fonction
suspendou depuis le contexte d'une coroutine. Le compilateur garantit cette restriction. - Ne bloque pas le thread. Lorsqu'une opération asynchrone est effectuée (par exemple, une requête réseau), la fonction
suspendsuspend l'exécution de la coroutine, libérant le thread pour d'autres tâches. Lorsque l'opération asynchrone est terminée, la coroutine reprend là où elle s'était arrêtée. - Utilisée pour le parallélisme structuré. En combinaison avec des fonctions comme
launchetasyncde la bibliothèquekotlinx.coroutines, elle permet d'écrire du code asynchrone de manière séquentielle et facile à lire. - Le compilateur transforme les fonctions
suspenden automates finis. Cela permet de conserver l'état de la coroutine entre les points de suspension.
Exemple :
import kotlinx.coroutines.*
suspend fun fetchData(): String {
// Simulation d'une opération asynchrone (par exemple, une requête réseau)
delay(1000) // points de suspension
return "Données chargées"
}
fun main() = runBlocking {
println("Commence le chargement...")
val data = fetchData() // Appel de la fonction suspend
println(data)
println("Chargement terminé")
}
Ici, fetchData est une fonction suspend qui utilise delay (une autre fonction suspend) pour simuler un délai. delay est un point de suspension. runBlocking crée un contexte de coroutine pour exécuter main comme un thread bloquant, mais à l'intérieur, fetchData s'exécute de manière non bloquante.