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