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()メソッドが呼ばれる。