Метод any
Future<T> any<T>(Возвращает результат первого будущего в futures для завершения.
Возвращаемое будущее завершается результатом первого будущего в futures для сообщения о завершении. Результаты всех других будущих задач отбрасываются.
Если futures пусто или если ни одно из его будущих задач не завершается, возвращаемое будущее никогда не завершается.
Исходный код
static Future<T> any<T>(Iterable<Future<T>> futures) {
var completer = new Completer<T>.sync();
var onValue = (T value) {
if (!completer.isCompleted) completer.complete(value);
};
var onError = (error, stack) {
if (!completer.isCompleted) completer.completeError(error, stack);
};
for (var future in futures) {
future.then(onValue, onError: onError);
}
return completer.future;
}
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-async/Future/any.html