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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。