Класс 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