forEach<T> static method
Performs an action for each element of the iterable, in turn.
The action
may be either synchronous or asynchronous.
Calls action
with each element in elements
in order.
If the call to action
returns a Future<T>
, the iteration waits
until the future is completed before continuing with the next element.
Returns a Future that completes with null
when all elements have been
processed.
Non-Future return values, and completion-values of returned Futures, are discarded.
Any error from action
, synchronous or asynchronous,
will stop the iteration and be reported in the returned Future.
Implementation
static Future<void> forEach<T>(
Iterable<T> elements,
FutureOr action(T element),
) {
var iterator = elements.iterator;
return doWhile(() {
if (!iterator.moveNext()) return false;
var result = action(iterator.current);
if (result is Future) return result.then(_kTrue);
return true;
});
}