Promiseで非同期処理を一斉に開始し、すべての完了を待ってから処理する  並列処理

const arrFunc = [];
for (let i = 0; i < 5; i++) {
  const func = (resolve) => {
    console.log(`処理${i}を開始`, new Date().toLocaleDateString());
    const delayMsec = 2000 * Math.random();
    setTimeout(() => {
      console.log(`処理${i}が完了`, new Date().toLocaleDateString());
      resolve();
    }, delayMsec);
  };
  arrFunc.push(func);
}
console.log(arrFunc);

const arrPromise = arrFunc.map((func) => new Promise(func));
console.log(arrPromise);

Promise.all(arrPromise).then(() => {
  console.log(`全処理完了!`);
});

並列処理したいPromiseインタンスを配列に格納して、Promise.all()メソッドの引数として割り当てる。全てののPromise処理が完了した時に、then()メソッドが呼ばれる。