任何方法
- bool test(
- 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;
}