본문 바로가기
JavaScript

Promise.all과 Promise.race

by 융디's 2024. 4. 21.
728x90
Promise.all과 Promise.race

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.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의 결과만을 출력



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