Spec-Zone.ru › Dart 2

dart:async

Класс Completer<T>

Способ создавать объекты Future и завершать их позднее значением или ошибкой.

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

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

или, если future представляет результат последовательности асинхронных вычислений, их можно объединить в цепочку с помощью 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 → Future<T>
read-only
Future, завершаемый этим completer.
hashCode → int
read-onlyinherited
Хэш-код этого объекта.
isCompleted → bool
read-only
Завершен ли future.
runtimeType → Type
read-onlyinherited
Представление типа объекта во время выполнения.

Методы

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

Операторы

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

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

Spec-Zone.ru

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