const randomNumber = () => Math.floor(Math.random() * 1000);
const setDelay = (delay) => {
console.log(`delaying: ${delay}`);
return new Promise((resolve, reject) => {
setTimeout(() => resolve(delay), delay);
// start all the setTimeouts
// results is a Promise that resolves to an array of values that
// correspond to the resolve values of each element in the Promise.all
const results = Promise.all([
setDelay(randomNumber()),
setDelay(randomNumber()),
setDelay(randomNumber()),
setDelay(randomNumber()),
results.then((arrayOfResolvedValues) => {
console.log(arrayOfResolvedValues);