當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。