任何方法

Future<bool> any(
  1. bool test(
    1. T element
    )
)

检查该流是否接受由该流提供的任何元素。

对流的每个元素调用test。如果调用返回true,返回的未来对象以true完成,并停止处理。

如果流的结束没有找到test接受的元素,返回的未来对象以false完成。

如果该流发出错误或调用test抛出异常,返回的未来对象以该错误完成,并停止处理。

示例

final result =
    await Stream.periodic(const Duration(seconds: 1), (count) => count)
        .take(15)
        .any((element) => element >= 5);

print(result); // true

实现

Future<bool> any(bool test(T element)) {
  _Future<bool> future = new _Future<bool>();
  StreamSubscription<T> subscription =
      this.listen(null, onError: future._completeError, onDone: () {
    future._complete(false);
  }, cancelOnError: true);
  subscription.onData((T element) {
    _runUserCode(() => test(element), (bool isMatch) {
      if (isMatch) {
        _cancelAndValue(subscription, future, true);
      }
    }, _cancelAndErrorClosure(subscription, future));
  });
  return future;
}