Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Dart中选择Future或waitAny?_Dart_Async Await_Future - Fatal编程技术网

在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;
}
它会忽略所有其他期货的任何错误。另一方面,它也忽略了非错误的结果,所以我想这是好的

当我们不再关心结果时,我们缺乏一种取消未来的方法