任何方法

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

检查是否此流提供的任何元素都接受 test

对此流中的每个元素调用 test。如果调用返回 true,则返回的 future 以 true 完成,并停止处理。

如果此流结束且未找到 test 接受的元素,则返回的 future 以 false 完成。

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

示例

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;
}