Promise.allで全ての処理が成功したか判定する

サンプルコード1


const someFunc1 = () => {
    return new Promise((resolve, reject) => {
        resolve(1);
    });
};
const someFunc2 = () => {
    return new Promise((resolve, reject) => {
        resolve(2);
    });
};
const someFunc3 = () => {
    return new Promise((resolve, reject) => {
        resolve(3);
    });
};

Promise.all([someFunc1(), someFunc2(), someFunc3()])
    .then((res) => {
        console.log('全て成功', res); // 全て成功 [1, 2, 3]
    })
    .catch((err) => {
        console.log(err);
    });

上記コードの場合、Promise.allに渡す関数全てでresolve()してるのでconsole.log('全て成功', res);が呼ばれる。
1つでもrejectがあれば一番初めにrejectした内容がerrに入る

サンプルコード2(async/await)


const someFunc1 = () => {
    return new Promise((resolve, reject) => {
        resolve();
    });
};
const someFunc2 = () => {
    return new Promise((resolve, reject) => {
        reject('failure');
    });
};
const someFunc3 = () => {
    return new Promise((resolve, reject) => {
        resolve();
    });
};

const asyncFunc = async () => {
    try {
        await Promise.all([someFunc1(), someFunc2(), someFunc3()]);
        console.log('全て成功');
    } catch (error) {
        console.log(error); // failure
    }
};

asyncFunc();

上記コードの場合、someFunc2()reject()が呼ばれているのでconsole.log(error);が実行されます。
Promise.allに渡す関数全てでresolve()した場合のみconsole.log('全て成功');が実行されます。