[typescript] 타입스크립트에서 `Promise.all()` 메소드를 사용하여 여러 프로미스를 병렬로 처리한 후 결과를 어떻게 처리할 수 있나요?
먼저, Promise.all()
은 여러 프로미스를 배열로 받아들이고, 해당 프로미스들이 모두 이행될 때 전체 프로미스를 이행시킵니다. 만약 배열에 전달된 프로미스 중 하나라도 거부된 경우, Promise.all()
은 첫 번째 거부된 프로미스의 이유와 결과를 반환합니다.
아래는 Promise.all()
을 사용하여 여러 프로미스를 병렬로 처리한 후 결과를 처리하는 간단한 예제입니다.
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 1 resolved');
}, 1000);
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 2 resolved');
}, 2000);
});
const promise3 = new Promise((resolve, reject) => {
setTimeout(() => {
reject('Promise 3 rejected');
}, 1500);
});
Promise.all([promise1, promise2, promise3])
.then((results) => {
console.log('All promises resolved:', results);
})
.catch((error) => {
console.log('Promise rejected:', error);
});
위의 예제에서는 promise1
, promise2
, promise3
세 개의 프로미스를 생성하고 배열에 담아 Promise.all()
에 전달했습니다. 그 다음에는 then()
메소드를 사용하여 모든 프로미스가 이행될 때 결과를 처리하고, catch()
메소드를 사용하여 거부된 경우의 처리를 정의했습니다.
위의 코드를 실행하면 promise3
가 거부되었기 때문에 catch()
블록이 실행되고, 에러 메시지가 출력됩니다.
이와 같이 Promise.all()
을 사용하면 여러 프로미스를 병렬로 처리한 후에 각각의 결과를 한꺼번에 처리할 수 있습니다.