Programmation Asynchrone Dart
Programmation asynchrone
Section titled “Programmation asynchrone”Futures
Section titled “Futures”Les API asynchrones renvoient principalement des Future. Les Futures sont l’équivalent des Promise en JavaScript. Il s’agit d’une valeur indéterminée au moment de l’affectation, mais qui sera potentiellement résolue ultérieurement, soit avec une donnée, soit avec une erreur.
Deux syntaxes permettent de les utiliser :
.then()async/await
future.then()
Section titled “future.then()”void main() { final data = _loadData(); print(data);
data.then( (value) => print(value), onError: (error) => print('ERROR : $error'), );}
Future<String> _loadData() { //return Future.value('Hello'); return Future.delayed(const Duration(seconds: 1), () => 'Hello'); //return Future.error('_loadData Error');}async-await
Section titled “async-await”void main() async { final version = await loadVersion(); print(version);}
Future<String> loadVersion() => Future.delayed(const Duration(seconds: 1), () => '1.0');En savoir plus sur l’asynchronie avec Dart
Erreurs et Exceptions
Section titled “Erreurs et Exceptions”Lancer des exceptions
Section titled “Lancer des exceptions”if (astronauts == 0) { throw StateError('No astronauts.');}Gérer les exceptions
Section titled “Gérer les exceptions”void main(List<String> arguments) async { try { for (var path in arguments) { var content = await File(path).readAsString(); print(content); } } on IOException catch (e, stacktrace) { print('Could not read: $e\n$stacktrace'); } catch (e, stacktrace) { print('Erreur : $e\n$stacktrace'); } finally { print('Done !'); }}