728x90
Promise.all과 Promise.race
@2024.04.04
Promise.all은 모든 Promise가 이행될 때까지 기다린 후 모든 Promise의 결과를 반환하고,
Promise.race는 가장 먼저 이행되거나 거부된 Promise의 결과만을 반환한다.
Promise.all
💡
여러 개의 Promise를 동시에 실행시키고, 모든 Promise가 이행될 때까지 기다린 후 모든 Promise 결과를 배열로 반환
- 하나의 Promise라도 거부된다면, Promise.all은 그 즉시 거부되며,
다른 Promise의 결과를 기다리지 않는다.
const promise1 = new Promise(resolve => setTimeout(() => resolve('첫 번째'), 1000)); const promise2 = new Promise(resolve => setTimeout(() => resolve('두 번째'), 2000)); const promise3 = new Promise(resolve => setTimeout(() => resolve('세 번째'), 3000)); Promise.all([promise1, promise2, promise3]) .then(values => { console.log(values); // ['첫 번째', '두 번째', '세 번째'] }) .catch(error => { console.error('에러 발생:', error); });
- 세 개의 Promise를 생성하고 Promise.all을 사용하여 모든 Promise가 이행될 때까지
기다린 후 결과를 출력
- 세 개의 Promise를 생성하고 Promise.all을 사용하여 모든 Promise가 이행될 때까지
Promise.race
💡
여러 개의 Promise 중 가장 먼저 이행되거나 거부된 Promise의 결과만을 반환
- 가장 먼저 이행되거나 거부된 Promise의 결과를 반환하며, 다른 Promise의 결과는 무시
- Promise가 먼저 성공하기 전에 가장 먼저 끝난 Promise 가 실패하면, 이를 실패로 간주
const promise1 = new Promise(resolve => setTimeout(() => resolve('첫 번째'), 2000)); const promise2 = new Promise(resolve => setTimeout(() => resolve('두 번째'), 1000)); const promise2 = new Promise(resolve => setTimeout(() => resolve('세 번째'), 1500)); Promise.race([promise1, promise2, promise3]) .then(value => { console.log(value); // '두 번째' }) .catch(error => { console.error('에러 발생:', error); });
- 세 개의 Promise를 생성하고 Promise.race를 사용하여 먼저 이행되는 Promise의 결과만을 출력
- 세 개의 Promise를 생성하고 Promise.race를 사용하여 먼저 이행되는 Promise의 결과만을 출력
728x90
'JavaScript' 카테고리의 다른 글
이벤트 (0) | 2024.04.22 |
---|---|
DOM (0) | 2024.04.22 |
async/await (0) | 2024.04.21 |
Promise (1) | 2024.04.21 |
비동기식 처리 및 이벤트 루프 (1) | 2024.04.21 |