Spec-Zone.ru › Dart 2

dart:async

метод any

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

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

Spec-Zone.ru

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