Run JavaScript promises in order. One after the other ends [duplicate]

Based on the comments. Here is the version works. A simple return is missing from original codes

var funcs = [
	() => {
    console.log('Task 1 Sart=", new Date());
  	return sleeper(7000, "Task 1  Resolved');    
  },
  () => {
  	console.log('Task 2  Sart=", new Date());
  	return sleeper(3000, "Task 2  Resolved');
  },
  () => {
  console.log('Task 3  Start=", new Date());
  console.log("Task 3  Return');
  }
];

function sleeper(m, msg) {
	return new Promise(function(resolve, reject) {
  	setTimeout(function() {
    resolve(console.log(msg, new Date()));
  	}, m);
	});
}

function runSequence(functionSequence) {
   return functionSequence.reduce((p, func) => {     
     return p.then(func);
   }, Promise.resolve());
} 

runSequence(funcs);

Leave a Comment