visit
//You have made promise to your friend and you leave for bank
if (everythingGoesWell) {
return theMoney //Promise is fulfilled
}
else {
return "Account_Frozen" //Promise failed
}
Promises are used in JavaScript to handle
async
operations. They are special objects that link the actual output (in the above example, it's required money) and the reason due to which we may not get the output (Account Frozen).
A JavaScript
promise
is either settled
or pending
. We can use the Promise
constructor to create a promise
.var thePromise = new Promise(executor())
The executor function is a callback of the promise constructor. It takes two callbacks:
resolve
and reject
, as arguments.resolve
callback is used when the promise
is actually fulfilled. It takes the output value as its argument.reject
callback is used when the promise
couldn't be fulfilled. It takes the reason as its argument. When we create a
promise
it initializes in its pending
state. Once the executor runs, the state changes to settled
which can be either resolved
or rejected
. var thePromise = new Promise(function(resolve,reject){
// Try to take out money from atm
withdraw(function(error,money) {
// If withdrawal failed, tell why
if (error) reject (error)
// else return the money
else resolve (money)
})
})
Promises can be a bit of hectic stuff if you don't have experience with callbacks and callback hells. But once you grasp this concept, there is no going back!
then
and catch
clausesThe
catch
function is attached to promise
which executes when the promise
is rejected. It takes the error sent through reject
method as an argument.The
then
function is attached to promise
which executes when the promise
is resolved. It sends the value sent through resolve
method as an argument.There is a
finally
clause too. It is executed no matter the promise
resolves or rejects. It takes no arguments.var thePromise = new Promise(function(resolve,reject){
// Try to take out money from atm
withdraw(function(error,money) {
// If withdrawal failed, tell why
if (error) reject (error)
// else return the money
else resolve (money)
})
})
thePromise.then(function(money) {
// This function is executed when the above promise resolves and returns an //amount of money
})
thePromise.catch(function(error) {
// This function is executed when the above promise rejects due to an error
})
thePromise.finally(function() {
// This function is executed after the promise is resolved or rejected.
})
Jaskirat S. Grewal (@thejscode)
Previously published at