라이브러리
[JAVASCRIPT] Promise.all(promises) - 모든 프로미스가 완료될 때까지 기다린 후 결과 배열 반환
Promise.all(promises)란?
`Promise.all(promises)`는 자바스크립트의 Promise API 중 하나로, 여러 개의 Promise를 동시에 처리하고, 모두 성공적으로 완료되면 결과를 반환하는 메서드입니다.
사용법
`Promise.all(promises)`를 사용하려면, 먼저 여러 개의 Promise를 생성하고, 그 Promise를 배열로 만들어야 합니다. 그런 다음 `Promise.all()` 메서드를 사용하여 Promise를 전달합니다.
예제 1: 기본적인 사용법
#hostingforum.kr
javascript
// Promise를 생성하는 함수
function delay(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
// Promise를 생성
const promise1 = delay(2000);
const promise2 = delay(3000);
const promise3 = delay(4000);
// Promise를 배열로 만들고, Promise.all() 메서드를 사용
Promise.all([promise1, promise2, promise3])
.then((results) => {
console.log(results); // [undefined, undefined, undefined]
})
.catch((error) => {
console.error(error);
});
예제 2: Promise.all()의 결과
`Promise.all()`의 결과는 Promise가 모두 성공적으로 완료된 후에 반환됩니다. 만약 하나 이상의 Promise가 실패하면, `Promise.all()`은 첫 번째 실패한 Promise의 결과를 반환합니다.
#hostingforum.kr
javascript
// Promise를 생성하는 함수
function delay(ms) {
return new Promise((resolve, reject) => {
if (ms === 3000) {
reject("Error!");
} else {
setTimeout(resolve, ms);
}
});
}
// Promise를 생성
const promise1 = delay(2000);
const promise2 = delay(3000);
const promise3 = delay(4000);
// Promise를 배열로 만들고, Promise.all() 메서드를 사용
Promise.all([promise1, promise2, promise3])
.then((results) => {
console.log(results); // [undefined, Error!, undefined]
})
.catch((error) => {
console.error(error); // Error!
});
예제 3: Promise.allSettled()
`Promise.all()`은 첫 번째 실패한 Promise의 결과를 반환하지만, `Promise.allSettled()`은 모든 Promise의 결과를 반환합니다. 만약 하나 이상의 Promise가 실패하면, 실패한 Promise의 결과도 포함됩니다.
#hostingforum.kr
javascript
// Promise를 생성하는 함수
function delay(ms) {
return new Promise((resolve, reject) => {
if (ms === 3000) {
reject("Error!");
} else {
setTimeout(resolve, ms);
}
});
}
// Promise를 생성
const promise1 = delay(2000);
const promise2 = delay(3000);
const promise3 = delay(4000);
// Promise를 배열로 만들고, Promise.allSettled() 메서드를 사용
Promise.allSettled([promise1, promise2, promise3])
.then((results) => {
console.log(results);
// [
// { status: 'fulfilled', value: undefined },
// { status: 'rejected', reason: 'Error!' },
// { status: 'fulfilled', value: undefined }
// ]
})
.catch((error) => {
console.error(error);
});
결론
`Promise.all(promises)`는 여러 개의 Promise를 동시에 처리하고, 모두 성공적으로 완료되면 결과를 반환하는 메서드입니다. 만약 하나 이상의 Promise가 실패하면, 첫 번째 실패한 Promise의 결과를 반환합니다. `Promise.allSettled()`은 모든 Promise의 결과를 반환합니다.
댓글목록
등록된 댓글이 없습니다.