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