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);