개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.07 10:34

Promise.race(promises) 사용시 오류

목록
  • 인덱스튜너 1일 전 2025.04.07 10:34
  • 4
    1
제가 Promise.race(promises) 함수를 사용하여 여러 개의 프로미스를 동시에 처리하였는데,
하나의 프로미스가 먼저 완료되었을 때 다른 프로미스의 결과를 무시하고 첫 번째 프로미스의 결과만 반환하는 것을 알게되었습니다.
이러한 동작을 원치 않는다면 어떻게 해야 하나요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    Promise.race(promises) 함수는 여러 개의 프로미스를 동시에 처리하고, 가장 먼저 완료된 프로미스의 결과를 반환합니다. 만약 첫 번째 프로미스가 완료된 후 다른 프로미스가 완료되더라도, 첫 번째 프로미스의 결과만 반환됩니다.

    이러한 동작을 원치 않는다면, Promise.all(promises) 함수를 사용할 수 있습니다. Promise.all(promises) 함수는 모든 프로미스가 완료된 후, 모든 프로미스의 결과를 반환합니다. 만약 하나의 프로미스가 실패하면, Promise.all(promises) 함수는 실패한 프로미스의 결과를 반환합니다.

    또한, Promise.allSettled(promises) 함수를 사용할 수 있습니다. Promise.allSettled(promises) 함수는 모든 프로미스가 완료된 후, 모든 프로미스의 결과를 반환합니다. 만약 하나의 프로미스가 실패하면, 실패한 프로미스의 결과를 반환합니다.

    예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    javascript
    
    const promises = [
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('첫 번째 프로미스의 결과');
    
        }, 1000);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('두 번째 프로미스의 결과');
    
        }, 2000);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          reject('세 번째 프로미스의 결과');
    
        }, 3000);
    
      }),
    
    ];
    
    
    
    Promise.all(promises).then((results) => {
    
      console.log(results);
    
    }).catch((error) => {
    
      console.error(error);
    
    });
    
    
    
    Promise.allSettled(promises).then((results) => {
    
      console.log(results);
    
    });
    
    


    위 예제에서, Promise.all(promises) 함수는 첫 번째 프로미스의 결과를 반환합니다. 하지만, Promise.allSettled(promises) 함수는 모든 프로미스의 결과를 반환합니다.

    2025-04-07 10:35

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 10,021건 / 7 페이지

검색

게시물 검색