Code
dart
Future<String> fetchUser(int id) async {
await Future.delayed(Duration(seconds: 1));
return 'user-$id';
}
Future<List<String>> fetchUsers(List<int> ids) async {
// Parallel: wait for all
final results = await Future.wait(ids.map(fetchUser));
return results;
}
Future<void> main() async {
// Single await
final user = await fetchUser(1);
print(user); // user-1
// Parallel
final users = await fetchUsers([1, 2, 3]);
print(users); // [user-1, user-2, user-3]
// Error handling
try {
final data = await fetchData();
} catch (e) {
print('Error: $e');
}
// Future.then (alternative)
fetchUser(2).then((u) => print(u)).catchError((e) => print(e));
}
// Stream (multiple async values)
Stream<int> counter(int max) async* {
for (var i = 0; i < max; i++) {
await Future.delayed(Duration(milliseconds: 100));
yield i;
}
}