♾️
【Flutter】ループで非同期処理を行う
for
Future<void> loadItems(List<String> ids) async {
final items = <Item>[];
for (final id in ids) {
final item = await _itemRepository.findById(id);
items.add(item);
}
}
Future.forEach
Future<void> loadItems(List<String> ids) async {
final items = <Item>[];
await Future.forEach(ids, (id) async {
final item = await _itemRepository.findById(id);
items.add(item);
});
}
ちなみに以下の実装だと、意図した通りに動作しません。
うまくいかない実装
Future<void> loadItems(List<String> ids) async {
final items = <Item>[];
ids.forEach((id) async {
Item item = await _itemRepository.findById(id);
items.add(item);
});
}
Benchmark
ベンチマークに関しては、以下の記事が参考になるかと思います(for
の方が早そうです)。
Discussion