Метод forEach
Метод forEach класса Future выполняет
асинхронную функцию для каждого элемента коллекции
по порядку. В отличие от обычного цикла, этот метод
гарантирует, что следующая итерация начнется только
после завершения Future, возвращенного
предыдущей итерацией. Первым параметром метод
принимает коллекцию (например, список), вторым -
асинхронную функцию, которая будет вызвана для
каждого элемента.
Синтаксис
Future.forEach(collection, action)
Пример
Давайте выполним асинхронную операцию для каждого элемента списка и выведем результаты в консоль:
Future<void> processItem(int item) async
{
await Future.delayed(Duration(milliseconds: 100));
print('Processed: $item');
}
void main() async
{
List<int> numbers = [1, 2, 3, 4, 5];
await Future.forEach(numbers, processItem);
}
Результат выполнения кода:
"Processed: 1"
"Processed: 2"
"Processed: 3"
"Processed: 4"
"Processed: 5"
Пример
Давайте используем анонимную функцию для обработки каждого элемента списка строк:
void main() async
{
List<String> letters = ['a', 'b', 'c', 'd', 'e'];
await Future.forEach(letters, (String letter) async {
await Future.delayed(Duration(milliseconds: 50));
print('Letter: $letter');
});
}
Результат выполнения кода:
"Letter: a"
"Letter: b"
"Letter: c"
"Letter: d"
"Letter: e"