dart:async
库中Completer
类的用法介绍如下。
一种生成 Future 对象并在以后使用值或错误完成它们的方法。
大多数时候,创建 Future 的最简单方法是仅使用 Future 构造函数之一来捕获单个异步计算的结果:
Future(() { doSomething(); return result; });
或者,如果未来表示一系列异步计算的结果,则可以使用 Future.then 或 Future 上的类似函数链接它们:
Future doStuff(){
return someAsyncOperation().then((result) {
return someOtherAsyncOperation(result);
});
}
如果您确实需要从头开始创建 Future — 例如,当您将基于回调的 API 转换为基于 Future 的 API 时 — 您可以使用 Completer,如下所示:
class AsyncOperation {
final Completer _completer = new Completer();
Future<T> doOperation() {
_startOperation();
return _completer.future; // Send future object back to client.
}
// Something calls this when the value is ready.
void _finishOperation(T result) {
_completer.complete(result);
}
// If something goes wrong, call this.
void _errorHappened(error) {
_completer.completeError(error);
}
}
相关用法
- Dart Completer.completeError用法及代码示例
- Dart Completer.sync用法及代码示例
- Dart Completer构造函数用法及代码示例
- Dart Comparable用法及代码示例
- Dart ContentType.text用法及代码示例
- Dart ContentType.parse用法及代码示例
- Dart Codec.fuse用法及代码示例
- Dart CanvasRenderingContext2D.drawImageScaledFromSource用法及代码示例
- Dart CanvasRenderingContext2D.drawImageScaled用法及代码示例
- Dart CanvasRenderingContext2D.drawImage用法及代码示例
- Dart CanvasRenderingContext2D.drawImageToRect用法及代码示例
- Dart CanvasPattern用法及代码示例
- Dart CanvasGradient用法及代码示例
- Dart CanvasElement.toDataUrl用法及代码示例
- Dart MapMixin.containsKey用法及代码示例
- Dart Iterator用法及代码示例
- Dart AttributeClassSet.intersection用法及代码示例
- Dart num.sign用法及代码示例
- Dart TransformList.last用法及代码示例
- Dart FileList.first用法及代码示例
- Dart FileList.length用法及代码示例
- Dart Iterable.takeWhile用法及代码示例
- Dart LinkedHashMap用法及代码示例
- Dart RegExp.pattern用法及代码示例
- Dart StreamTransformer构造函数用法及代码示例
注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 Completer<T> class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。