Completer<T>抽象 接口

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

大多数情况下,创建 Future 的最简单方法就是使用 Future 构造函数之一来捕获单个异步计算的结果

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

或者,如果 Future 表示一系列异步计算的结果,它们可以使用 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);
  }
}
注释
  • @vmIsolateUnsendable

构造函数

Completer()
创建一个新的 Completer。
工厂
Completer.sync()
同步完成 Future。
工厂

属性

future Future<T>
由该 Completer 完成的 Future。
无设置器
hashCode int
该对象的哈希码。
无设置器继承
isCompleted bool
是否已经完成了 future
无设置器
runtimeType Type
该对象运行时类型的表示。
无设置器继承

方法

complete([FutureOr<T>? value]) → void
使用提供的值完成 future
completeError(Object error, [StackTrace? stackTrace]) → void
使用错误完成 future
noSuchMethod(Invocation invocation) → dynamic
当访问不存在的方法或属性时调用。
继承
toString() String
该对象的字符串表示。
继承

运算符

运算符 ==(Object other) bool
等号运算符。
继承