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


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