
Promise.all(promises) 함수는 모든 Promise가 성공적으로 완료되는 경우에만 resolve를 반환합니다. 하나의 Promise가 실패하면 reject를 반환합니다.
이러한 특성으로 인해 하나의 Promise가 실패하면 전체 Promise가 실패하는 것을 확인할 수 있습니다.
Promise.all(promises)에서 하나의 Promise가 실패하면 에러는 다음과 같이 처리됩니다.
1. 하나의 Promise가 실패하면 Promise.all(promises)는 즉시 reject를 반환합니다.
2. reject를 반환하기 전에, Promise.all(promises)는 실패한 Promise를 포함한 모든 Promise의 상태를 확인합니다.
3. 실패한 Promise를 제외한 나머지 Promise의 결과는 무시됩니다.
4. Promise.all(promises)는 reject를 반환할 때, 실패한 Promise의 에러를 포함한 Error 객체를 반환합니다.
예를 들어, 다음 코드를 살펴보겠습니다.
#hostingforum.kr
javascript
const promises = [
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 1 성공');
}, 1000);
}),
new Promise((resolve, reject) => {
setTimeout(() => {
reject('Promise 2 실패');
}, 2000);
}),
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 3 성공');
}, 3000);
})
];
Promise.all(promises)
.then((results) => {
console.log(results);
})
.catch((error) => {
console.error(error);
});
이 코드를 실행하면, Promise.all(promises)는 첫 번째 Promise가 성공하고 두 번째 Promise가 실패하는 것을 확인할 수 있습니다. 따라서, Promise.all(promises)는 두 번째 Promise의 에러를 포함한 Error 객체를 반환합니다.
#hostingforum.kr
javascript
// Promise 1 성공
// Promise 2 실패
// Error: Promise 2 실패
이러한 특성으로 인해, Promise.all(promises) 함수를 사용할 때는 하나의 Promise가 실패하면 전체 Promise가 실패하는 것을 고려하여 에러를 처리해야 합니다.
2025-04-17 11:19