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.18.5/dart-async/Future/then.html

Spec-Zone.ru

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