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


Dart Future.timeout用法及代码示例


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

用法:

Future<T> timeout(
   Duration timeLimit,    
   {FutureOr<T> onTimeout(
)?}   
)

Time-out timeLimit 之后的未来计算已经过去。

如果这个未来及时完成,则返回一个与这个未来具有相同值的新未来。

如果在timeLimit 过去之前这个future 没有完成,那么将执行onTimeout 动作,并将其结果(无论是返回还是抛出)用作返回的future 的结果。 onTimeout 函数必须返回 TFuture<T>

如果省略 onTimeout ,超时将导致返回的未来以 TimeoutException 完成。

例子:

void main() async {
  var result = await waitTask()
      .timeout(const Duration(seconds: 10));
  print(result); // 'completed'

  result = await waitTask()
      .timeout(const Duration(seconds: 1), onTimeout: () => 'timeout');
  print(result); // 'timeout'

  result = await waitTask()
      .timeout(const Duration(seconds: 2)); // Throws.
}

Future<String> waitTask() async {
  await Future.delayed(const Duration(seconds: 5));
  return 'completed';
}

相关用法


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