當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。