Wait for promises

by jonahe

JavaScript

const delayedValue = (val, delay) => new Promise((resolve, reject) => {
	setTimeout(() => {
  	console.log("resolving value " + val);
    resolve(val);
  }, delay);
});



const manyDelays =  [
	() => delayedValue("hello", 3000),
  () => delayedValue(", world!", 2000),
  () => delayedValue("Nice to see you!", 1000),e
];

const sequence = arrOfPromiseGenFuncs => {
	const [firstProm, ...restProms] = arrOfPromiseGenFuncs;
	restProms
  	.reduce((soFar, nextProm) => {
			soFar = soFar.then(() => nextProm());
      return soFar;
	}, firstProm());
}


sequence(manyDelays);