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