サンプルコード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('全て成功');
が実行されます。