Les opérations asynchrones
Future, await et async
En Dart, les futures, await
et async
sont des fonctionnalités clés pour gérer les opérations asynchrones de manière efficace.
Future
Un Future représente une valeur ou une erreur qui sera disponible à un moment donné dans le futur. Les Futures sont utilisés pour des opérations asynchrones, telles que les appels réseau ou les opérations de lecture/écriture de fichiers.
Future<String> fetchData() {
return Future.delayed(Duration(seconds: 2), () {
return 'Data loaded successfully!';
});
}
void main() {
fetchData().then((value) {
print(value); // Affiche : Data loaded successfully!
});
}
Dans cet exemple, fetchData
retourne un Future qui se résout avec une chaîne après un délai de 2 secondes. La méthode then
est utilisée pour spécifier une fonction de rappel qui sera appelée lorsque le Future sera résolu.
Await et async
Le mot-clé await
est utilisé pour suspendre l'exécution jusqu'à ce qu'un Future soit résolu. Il ne peut être utilisé que dans une fonction marquée avec le mot-clé async
.
Future<void> fetchData() async {
await Future.delayed(Duration(seconds: 2));
print('Data loaded successfully!');
}
void main() {
fetchData();
}
Dans cet exemple, la fonction fetchData
est marquée comme async
, ce qui permet d'utiliser await
à l'intérieur. L'exécution de la fonction est suspendue pendant 2 secondes jusqu'à ce que le Future soit résolu.
Gestion des erreurs
Les Futures peuvent également être utilisés pour gérer les erreurs en utilisant les méthodes catchError
ou try-catch
.
Future<void> fetchData() async {
try {
// Simuler un chargement de données
await Future.delayed(Duration(seconds: 2));
throw Exception('Failed to load data!');
} catch (e) {
print('Error: $e');
}
}
void main() {
fetchData();
}
Dans cet exemple, une erreur est délibérément déclenchée après un délai de 2 secondes. La méthode catchError
est utilisée pour gérer l'erreur et afficher un message approprié.
Les Futures, await
et async
sont des outils puissants pour gérer les opérations asynchrones de manière claire et efficace en Dart.
Last updated