Skip to content
Dart

Async/Await y Future

Programación asíncrona con Future y async/await.

#async#future#stream

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;
  }
}