
Promise.all(promises) 함수는 모든 Promise가 fulfilled이 되지 않았더라도 resolve가 호출되는 것을 보게되었습니다. 이 문제를 해결하기 위해서는, Promise.all(promises) 함수 대신 Promise.allSettled(promises) 함수를 사용하면 됩니다.
Promise.allSettled(promises) 함수는 모든 Promise가 settled(both fulfilled or rejected)되면 resolve가 호출됩니다.
또한, Promise.all(promises) 함수에서 reject를 캐치하고 reject된 Promise를 처리하는 방법은 다음과 같습니다.
1. catch() 메서드를 사용하여 reject된 Promise를 캐치할 수 있습니다. catch() 메서드는 Promise.all(promises) 함수의 결과에 적용됩니다.
2. try-catch 문을 사용하여 reject된 Promise를 캐치할 수 있습니다. try-catch 문은 Promise.all(promises) 함수의 결과에 적용됩니다.
예제:
#hostingforum.kr
javascript
const promises = [
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 1 fulfilled');
}, 1000);
}),
new Promise((resolve, reject) => {
setTimeout(() => {
reject('Promise 2 rejected');
}, 2000);
}),
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 3 fulfilled');
}, 3000);
}),
];
Promise.allSettled(promises)
.then((results) => {
console.log(results);
})
.catch((error) => {
console.error(error);
});
try {
const results = await Promise.all(promises);
console.log(results);
} catch (error) {
console.error(error);
}
위의 예제에서, Promise.allSettled(promises) 함수는 모든 Promise가 settled되면 resolve가 호출됩니다. catch() 메서드는 reject된 Promise를 캐치합니다. try-catch 문은 reject된 Promise를 캐치합니다.
2025-05-03 04:11