在Dart中选择Future或waitAny?
我知道在Dart中选择Future或waitAny?,dart,async-await,future,Dart,Async Await,Future,我知道Future.wait获取一个期货列表,并在列表中的所有期货都已完成时返回一个已完成期货列表 Dart中有没有一种方法可以阻止并等待列表中的任何未来完成,而不是等待它们全部完成?不太可能。我们可以添加一个Future.waitAny(其中现有的一个隐式地是waitAll) 功能很简单: Future waitAny(Iterable<Future> futures) { var completer = new Completer(); for (var f in fut
Future.wait
获取一个期货列表,并在列表中的所有期货都已完成时返回一个已完成期货列表
Dart中有没有一种方法可以阻止并等待列表中的任何未来完成,而不是等待它们全部完成?不太可能。我们可以添加一个
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;
}
未来等待(可预测未来){
var completer=new completer();
for(期货中的var f){
f、 然后((v){
如果(!completer.isCompleted)completer.completed(v);
},onError:(东、南){
如果(!completer.isCompleted)completer.completeError(e,s);
});
}
返回completer.future;
}
它会忽略所有其他期货的任何错误。另一方面,它也忽略了非错误的结果,所以我想这是好的
当我们不再关心结果时,我们缺乏一种取消未来的方法