Categories
ECMAScript Javascript

Promises

/**
 * 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

Leave a comment

Design a site like this with WordPress.com
Get started