Promise.all
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
setTimeout( () => resolve("foo"), 1000);
});
Promise.all([promise1, promise2, promise3]).then(function(values) {
console.log(values);
});
- 여러 프로미스를 한꺼번에 받아 처리 가능
- 병렬로 처리되는 것을 기다렸다가 실행
- 중간에 에러가 발생하면 즉시 reject 반환
Promise.allSettled
const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) => setTimeout(reject, 100, 'foo'));
const promises = [promise1, promise2];
Promise.allSettled(promises).
then((results) => results.forEach((result) => console.log(result.status)));
- Promise.all과 유사하지만 중간에 에러가 발생해도 reject 로 빠지지 않고 모든 상태를 기다렸다가 결과를 알려주는 것이 다름
Promise.race
const promise1 = new Promise((resolve, reject) => {
setTimeout(resolve, 500, 'one');
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'two');
});
Promise.race([promise1, promise2]).then((value) => {
console.log(value);
});
Promise.any
- 먼저 처리된 상태 중 fulfilled 상태만 먼저 반환
- 만약 fulfilled 상태가 없으면 'AggregateError' 발생