Метод whenComplete абстрактного типа
Future<T> whenComplete(Зарегистрировать функцию, которая будет вызвана при завершении этого будущего.
Функция 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