当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart Future.wait用法及代码示例


dart:async 库中Future.wait 方法的用法介绍如下。

用法:

Future<List<T>> wait<T>(
   Iterable<Future<T>> futures,    
   {bool eagerError = false,    
   void cleanUp(
   T successValue   
)?}   
)

等待多个期货完成并收集它们的结果。

返回一个 future,一旦所有提供的 future 都完成,它就会完成,或者带有结果,或者如果任何提供的 future 失败,则返回一个错误。

返回的未来的值将是所有值的列表,这些值按照通过迭代 futures 提供的期货的顺序生成。

如果任何未来以错误完成,则返回的未来以该错误完成。如果进一步的期货也以错误完成,则这些错误将被丢弃。

如果eagerError 为真,则返回的future 会在一个future 出现第一个错误时立即完成并出现错误。否则所有的futures必须在返回的future完成之前完成(仍然有第一个错误;其余的错误被静默删除)。

在错误的情况下,cleanUp(如果提供)将在成功期货的任何非空结果上调用。这使得 cleanUp 资源可能会丢失(因为返回的未来不提供对这些值的访问)。如果没有错误,则不使用cleanUp 函数。

cleanUp 的调用不应抛出。如果是这样,则错误将是未捕获的异步错误。

例子:

void main() async {
  var value = await Future.wait([delayedNumber(), delayedString()]);
  print(value); // [2, result]
}

Future<int> delayedNumber() async {
  await Future.delayed(const Duration(seconds: 2));
  return 2;
}

Future<String> delayedString() async {
  await Future.delayed(const Duration(seconds: 2));
  return 'result';
}

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 wait<T> method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。