Spec-Zone.ru › Dart 2

dart:async

абстрактный метод then<R>

Future<R> then<R>(
  1. FutureOr<R> onValue(
    1. T value
    ),
  2. {Function? onError}
)

Регистрирует обратные вызовы, которые будут вызваны после завершения этого будущего.

Когда это будущее завершается со значением, обратный вызов onValue будет вызван с этим значением. Если это будущее уже завершено, обратный вызов не будет вызван немедленно, а будет запланирован на более позднюю микрозадачу.

Если указан onError и это будущее завершается с ошибкой, обратный вызов onError вызывается с этой ошибкой и её трассировкой стека. Обратный вызов onError должен принимать один или два аргумента, причём вторым аргументом является StackTrace. Если onError принимает два аргумента, он вызывается с ошибкой и трассировкой стека, в противном случае — только с объектом ошибки. Обратный вызов onError должен возвращать значение или будущее, которое можно использовать для завершения возвращаемого будущего, поэтому его тип должен быть совместим с FutureOr<R>.

Возвращает новое Future, которое завершается результатом вызова onValue (если это будущее завершается со значением) или onError (если это будущее завершается с ошибкой).

Если вызванный обратный вызов выбрасывает исключение, возвращаемое будущее завершается выброшенной ошибкой и её трассировкой стека. В случае onError, если выброшенное исключение identical аргументу-ошибке для onError, выброс считается повторным выбросом, и вместо этого используется исходная трассировка стека.

Если обратный вызов возвращает Future, будущее, возвращённое then, будет завершено с тем же результатом, что и будущее, возвращённое обратным вызовом.

Если onError не задан и это будущее завершается с ошибкой, ошибка напрямую передаётся возвращаемому будущему.

В большинстве случаев код более читаем, если использовать отдельно catchError, возможно, с параметром test, вместо обработки значения и ошибки в одном вызове then.

Обратите внимание: будущие объекты не откладывают сообщение об ошибках до добавления обработчиков. Если первый вызов then или catchError происходит после того, как это будущее завершилось с ошибкой, ошибка сообщается как необработанная. См. описание Future.

Реализация

Future<R> then<R>(FutureOr<R> onValue(T value), {Function? onError});

© 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/Future/then.html

Spec-Zone.ru

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