Promise API allows you to execute Asynchronous operations. Promise executes one of the callback methods, i.e either resolve or reject. Sometimes you want to execute code inside irrespective of resolving or rejecting callbacks.
Es9 introduced the finally feature to execute let’s create a Promise object
let promise1 = new Promise(function(resolve, reject) {
resolve("Resolved"); // Returns "Resolved" immediately
});
let promise2 = new Promise(function(resolve, reject) {
reject("Rejected"); // Returns "Rejected" immediately
});
The promise is called using the below code.
promise1 returns and calls a resolved callback.
promise2 returns and calls a rejected callback.
then calls with resolved and rejected callbacks.
promise1.then(
function(result) { console.log(result)},
function(error) { console.log(error)}
);
promise2.then(
function(result) { console.log(result)},
function(error) { console.log(error)}
);
Output:
Resolved
Rejected
Similarly, you can rewrite then with then and catch as given below.
catch used to catch rejected callbacks.
promise1
.then(function (result) { console.log(result) })
.catch(function (error) { console.log(error) });
promise2
.then(function (result) { console.log(result) })
.catch(function (error) { console.log(error) });
Javascript Promise finally method examples
ES09 introduced finally a method to promise API objects similar to the then method.
Syntax
promise.then(callback).catch(callback).finally(callback)
Example:
promise1.then(
function(result) { console.log(result)},
function(error) { console.log(error)}
).finally(function(){console.log("finally")});
promise2.then(
function(result) { console.log(result)},
function(error) { console.log(error)}
).finally(function(){console.log("finally")});
Similarly, the Above, can be rewritten using given below code
promise1
.then(function (result) { console.log(result) })
.catch(function (error) { console.log(error) })
.finally(function () { console.log("finally") });
promise2
.then(function (result) { console.log(result) })
.catch(function (error) { console.log(error) })
.finally(function () { console.log("finally") });
Output:
Resolved
Rejected
finally
finally
Hence, finally used to execute the clean-up code during asynchronous operation.