Метод any
-
bool test(
- 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