/**
* Promise is an object that executes resolve function if promise is successful
* else executes reject function
*
Syntax
let p = new Promise(function(resolve,reject){
let workDone = true; // some time consuming work
if(workDone){
//invoke resolve function passed
resolve(SUCCESSVALUE)
}
else{
reject(ERRORVALUE)
}
})
p.then(SUCCESSHANDLER).catch(ERRORHANDLER)
*Promise can also be used to execute asynchronous callbacks
*/
function isPositiveMultiplication(num1,num2){
let p = new Promise(function(resolve,reject){
if(num1>0 && num2>0)
resolve(num1*num2);
else
reject("multiplication is negative ");
});
return p;
}
function printMultiplication(result){
console.log("multiplication result is :: "+result);
}
function printMultiplicationError(error){
console.log("multiplication error is :: " + error);
}
isPositiveMultiplication(10,20).then(printMultiplication).catch(printMultiplicationError);
isPositiveMultiplication(-10,20).then(printMultiplication).catch(printMultiplicationError);
isPositiveMultiplication(10,-20).then(printMultiplication).catch(printMultiplicationError);
//Promise.all - this function is used to return values of all promises. Resolve is called if all promises are successful, if any of promise fails Error method is called
Promise.all([isPositiveMultiplication(10,20),isPositiveMultiplication(30,40),isPositiveMultiplication(50,60),isPositiveMultiplication(50,-60)])
.then(function(resolveValue){
/*console.log(resolveValue[0])
console.log(resolveValue[1])
console.log(resolveValue[2])
*/console.log('all multiply operations done & positive')
})
.catch(function(err){
console.log('Error :: ',err)
})
Promise.all([isPositiveMultiplication(10,20),isPositiveMultiplication(30,40),isPositiveMultiplication(50,60),isPositiveMultiplication(50,60)])
.then(function(resolveValue){
console.log(resolveValue[0])
console.log(resolveValue[1])
console.log(resolveValue[2])
console.log(resolveValue[3])
console.log('all add operations done & positive')
})
.catch(function(err){
console.log('Error :: ',err)
})
//race method returns result of promise that is settled first
Promise.race([isPositiveMultiplication(10,20),isPositiveMultiplication(30,40)])
.then(function(resolveValue){
console.log('one of them is done::'+resolveValue)
console.log(resolveValue)
}).catch(function(err){
console.log("Error",err)
})
Output
