Spec-Zone.ru › Dart 2

dart:async

Метод every

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

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

Вызывает test для каждого элемента этого потока. Если вызов возвращает false, возвращаемое будущее завершается значением false, и обработка останавливается.

Если этот поток завершается, не найдя элемент, который test отклоняет, возвращаемое будущее завершается значением true.

Если этот поток генерирует ошибку или если вызов test генерирует ошибку, возвращаемое будущее завершается этой ошибкой, и обработка останавливается.

Пример:

final result =
    await Stream.periodic(const Duration(seconds: 1), (count) => count)
        .take(15)
        .every((x) => x <= 5);
print(result); // false

Реализация

Future<bool> every(bool test(T element)) {
  _Future<bool> future = new _Future<bool>();
  StreamSubscription<T> subscription =
      this.listen(null, onError: future._completeError, onDone: () {
    future._complete(true);
  }, cancelOnError: true);
  subscription.onData((T element) {
    _runUserCode(() => test(element), (bool isMatch) {
      if (!isMatch) {
        _cancelAndValue(subscription, future, false);
      }
    }, _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/every.html

Spec-Zone.ru

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