dart:async
庫中Future.whenComplete
方法的用法介紹如下。
用法:
Future<T> whenComplete(
FutureOr<void> action(
)
)
注冊一個在這個未來完成時要調用的函數。
action
函數在這個未來完成時被調用,無論它是使用值還是錯誤完成。
這是"finally" 塊的異步等效項。
此調用返回的未來 f
將以與此未來相同的方式完成,除非在 action
調用中或在 action
調用返回的 Future 中發生錯誤。如果對action
的調用未返回未來,則忽略其返回值。
如果對action
的調用拋出,則f
以拋出的錯誤完成。
如果對 action
的調用返回 Future 、 f2
,則 f
的完成將延遲到 f2
完成。如果 f2
以錯誤完成,那也將是 f
的結果。 f2
的值始終被忽略。
該方法等價於:
Future<T> whenComplete(action() {
return this.then((v) {
var f2 = action();
if (f2 is Future) return f2.then((_) => v);
return v;
}, onError: (e) {
var f2 = action();
if (f2 is Future) return f2.then((_) { throw e; });
throw e;
});
}
例子:
void main() async {
var value =
await waitTask().whenComplete(() => print('do something here'));
// Prints "do something here" after waitTask() completed.
print(value); // Prints "done"
}
Future<String> waitTask() {
Future.delayed(const Duration(seconds: 5));
return Future.value('done');
}
// Outputs: 'do some work here' after waitTask is completed.
相關用法
- Dart Future.wait用法及代碼示例
- Dart Future.doWhile用法及代碼示例
- Dart Future.any用法及代碼示例
- Dart Future.value用法及代碼示例
- Dart Future.catchError用法及代碼示例
- Dart Future.error用法及代碼示例
- Dart Future.timeout用法及代碼示例
- Dart Future.sync用法及代碼示例
- Dart Future.delayed用法及代碼示例
- Dart Future用法及代碼示例
- Dart FutureExtensions.onError用法及代碼示例
- Dart Function.apply用法及代碼示例
- Dart FileList.first用法及代碼示例
- Dart FileList.length用法及代碼示例
- Dart File用法及代碼示例
- Dart Finalizer.attach用法及代碼示例
- Dart Float32List.view用法及代碼示例
- Dart FileSystemEntity用法及代碼示例
- Dart FileSystemEntity.resolveSymbolicLinks用法及代碼示例
- Dart Finalizable用法及代碼示例
- Dart File.renameSync用法及代碼示例
- Dart Float32x4List.sublist用法及代碼示例
- Dart Finalizer用法及代碼示例
- Dart FileSystemEntity.resolveSymbolicLinksSync用法及代碼示例
- Dart FileList.elementAt用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 whenComplete method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。