首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Dart中选择未来还是waitAny?

在Dart中选择未来还是waitAny?
EN

Stack Overflow用户
提问于 2015-12-07 04:08:21
回答 1查看 153关注 0票数 4

据我所知,Future.wait接受一个期货列表,并在该列表中的所有期货都完成时返回已完成的期货列表。

是否有一种方法可以阻止和等待列表中的任何未来完成,而不是等待它们全部完成?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-07 07:58:06

不怎么有意思。我们可以添加一个Future.waitAny (其中现有的是隐式的waitAll)。

功能很简单:

代码语言:javascript
复制
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;
}

它确实忽略了其他所有未来的错误。另一方面,它也忽略了非错误的结果,所以我想它是好的。

当我们不再关心结果时,我们就没有办法取消未来。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34126278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档