Spec-Zone.ru › Dart 2

dart:async

Метод any

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

Проверяет, принимает ли test любой элемент, предоставляемый этим потоком.

Вызывает 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;
}

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-async/Stream/any.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API