forEach<T> 静态方法
对可迭代的每个元素执行一个操作,依次进行。
action
可以是同步的或异步的。
按顺序使用elements
中的每个元素调用action
。如果action
的调用返回一个Future<T>
,则迭代将等待该future完成后再继续下一个元素。
返回一个Future,当所有元素都被处理完毕时,它完成并返回null
。
非Future
返回值,以及返回的Future
的完成值,都将被丢弃。
action
的任何错误,无论是同步的还是异步的,都将停止迭代,并在返回的Future中报告。
实现
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;
});
}