forEach 方法

Future<void> forEach(
  1. void action(
    1. T element
    )
)

在此流的每个元素上执行 action

当此流的全部元素都被处理完毕时,完成返回的 Future

如果此流发出错误,或者对 action 的调用抛出异常,则返回的 future 将以该错误完成,并且处理停止。

实现

Future<void> forEach(void action(T element)) {
  _Future future = new _Future();
  StreamSubscription<T> subscription =
      this.listen(null, onError: future._completeError, onDone: () {
    future._complete(null);
  }, cancelOnError: true);
  subscription.onData((T element) {
    _runUserCode<void>(() => action(element), (_) {},
        _cancelAndErrorClosure(subscription, future));
  });
  return future;
}