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; }); }
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/2.0.0/dart-async/Future/whenComplete.html