forEach<T> 静态方法
对于可迭代的每个元素执行一个动作,依次进行。
动作可以是同步的或异步的。
按顺序调用 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;
});
}