Spec-Zone.ru › Dart 1

dart:async

Метод whenComplete абстрактного типа

Future<T> whenComplete(dynamic action())

Зарегистрировать функцию, которая будет вызвана при завершении этого будущего.

Функция action вызывается при завершении этого будущего, независимо от того, завершилось ли оно с значением или ошибкой.

Это асинхронный аналог блока «finally».

Возвращаемое будущее этим вызовом, f, завершится так же, как и это будущее, если не произойдёт ошибка в вызове action, или в Future, возвращаемом вызовом action. Если вызов action не возвращает будущее, его возвращаемое значение игнорируется.

Если вызов action вызывает исключение, то f завершается с этой ошибкой.

Если вызов action возвращает Future, f2, то завершение f откладывается до завершения f2. Если f2 завершается с ошибкой, то это будет результатом и для f. Значение f2 всегда игнорируется.

Этот метод эквивалентен:

Future<T> whenComplete(action()) {
  return this.then((v) {
    var f2 = action();
    if (f2 is Future) return f2.then((_) => v);
    return v
  }, onError: (e) {
    var f2 = action();
    if (f2 is Future) return f2.then((_) { throw e; });
    throw e;
  });
}

Исходный код

Future<T> whenComplete(FutureOr action());

© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-async/Future/whenComplete.html

Spec-Zone.ru

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