据我所知,Future.wait接受一个期货列表,并在该列表中的所有期货都完成时返回已完成的期货列表。
是否有一种方法可以阻止和等待列表中的任何未来完成,而不是等待它们全部完成?
发布于 2015-12-07 07:58:06
不怎么有意思。我们可以添加一个Future.waitAny (其中现有的是隐式的waitAll)。
功能很简单:
Future waitAny(Iterable<Future> futures) {
var completer = new Completer();
for (var f in futures) {
f.then((v) {
if (!completer.isCompleted) completer.complete(v);
}, onError: (e, s) {
if (!completer.isCompleted) completer.completeError(e, s);
});
}
return completer.future;
}它确实忽略了其他所有未来的错误。另一方面,它也忽略了非错误的结果,所以我想它是好的。
当我们不再关心结果时,我们就没有办法取消未来。
https://stackoverflow.com/questions/34126278
复制相似问题