当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart Completer用法及代码示例


dart:async 库中Completer 类的用法介绍如下。

一种生成 Future 对象并在以后使用值或错误完成它们的方法。

大多数时候,创建 Future 的最简单方法是仅使用 Future 构造函数之一来捕获单个异步计算的结果:

Future(() { doSomething(); return result; });

或者,如果未来表示一系列异步计算的结果,则可以使用 Future.thenFuture 上的类似函数链接它们:

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.dev大神的英文原创作品 Completer<T> class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。