Spec-Zone.ru › Dart 2

dart:async

Класс Completer<T>

Способ создания объектов Future и их последующего завершения значением или ошибкой.

В большинстве случаев самый простой способ создания будущего — использование одного из конструкторов Future для захвата результата единичного асинхронного вычисления:

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

или, если будущее представляет результат последовательности асинхронных вычислений, их можно объединить с помощью Future.then или аналогичных функций в Future:

Future doStuff(){
  return someAsyncOperation().then((result) {
    return someOtherAsyncOperation(result);
  });
}

Если вам необходимо создать Future с нуля — например, при преобразовании API на основе обратных вызовов в API на основе Future — вы можете использовать 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);
  }
}

Конструкторы

Completer()
factory
Создаёт новый completer.
Completer.sync()
factory
Синхронно завершает будущее.

Свойства

future → Future<T>
только для чтения
Будущее, которое завершается этим completer.
hashCode → int
только для чтения, унаследованное
Хэш-код этого объекта.
isCompleted → bool
только для чтения
Было ли завершено future.
runtimeType → Type
только для чтения, унаследованное
Представление runtime-типа объекта.

Методы

complete([FutureOr<T>? value]) → void
Завершает future предоставленными значениями.
completeError(Object error, [StackTrace? stackTrace]) → void
Завершает future ошибкой.
noSuchMethod(Invocation invocation) → dynamic
унаследованное
Вызывается при обращении к несуществующему методу или свойству.
toString() → String
унаследованное
Строковое представление этого объекта.

Операторы

operator ==(Object other) → bool
унаследованное
Оператор равенства.

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-async/Completer-class.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API