forEach 方法
- void action(
- 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;
}