whenComplete method
- @override
Registers a function to be called when this future completes.
The action function is called when this future completes, whether it
does so with a value or with an error.
This is the asynchronous equivalent of a "finally" block.
The future returned by this call, f, will complete the same way
as this future unless an error occurs in the action call, or in
a Future returned by the action call. If the call to action
does not return a future, its return value is ignored.
If the call to action throws, then f is completed with the
thrown error.
If the call to action returns a Future, f2, then completion of
f is delayed until f2 completes. If f2 completes with
an error, that will be the result of f too. The value of f2 is always
ignored.
This method is equivalent to:
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;
});
}
Implementation
@override
Future<void> whenComplete(dynamic action()) {
return _primaryCompleter.future.whenComplete(action);
}