JavaScript에서 비동기 작업을 처리하기 위해 Promise를 사용하는데, 때로는 여러 개의 Promise를 동시에 처리해야 하는 경우가 있습니다. 이때 Promise.all() 메서드를 사용하면 간편하게 여러 개의 Promise를 동시에 처리할 수 있습니다.
Promise.all() 메서드는 인자로 전달된 Promise들이 모두 완료될 때까지 기다렸다가, 모든 Promise의 결과를 배열로 반환합니다. 만약 하나의 Promise라도 실패하면, 모든 Promise의 실행이 종료되며 실패한 Promise의 오류 정보가 반환됩니다.
아래는 Promise.all() 메서드를 사용하여 동시에 처리하는 예시 코드입니다.
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('첫 번째 Promise 완료');
}, 1000);
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('두 번째 Promise 완료');
}, 2000);
});
const promise3 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('세 번째 Promise 완료');
}, 3000);
});
Promise.all([promise1, promise2, promise3])
.then(results => {
console.log(results);
// 결과: ['첫 번째 Promise 완료', '두 번째 Promise 완료', '세 번째 Promise 완료']
})
.catch(error => {
console.error(error);
});
위의 코드에서, promise1, promise2, promise3는 각각 다른 작업을 수행하는 Promise 객체입니다. Promise.all() 메서드의 인자로 이들을 배열로 전달하면, 모든 Promise가 완료될 때까지 기다린 후 결과를 반환합니다. 결과는 then() 메서드에서 처리할 수 있으며, 성공한 Promise의 결과는 배열로 전달됩니다. 만약 한 개라도 실패한 Promise가 있다면 catch() 메서드에서 오류를 처리할 수 있습니다.
Promise.all() 메서드를 사용하면 여러 개의 비동기 작업을 효율적으로 처리할 수 있으므로, 병렬적인 작업이 필요한 상황에서 유용합니다. 동시에 실행되는 Promise가 서로 독립적인 경우 사용하기 적합합니다.
#javascript #promise #async-await