개발자 Q&A

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

2025.04.17 11:18

Promise.all(promises) 사용 시 발생하는 에러 처리 방법

목록
  • 웹표준수호자 5일 전 2025.04.17 11:18
  • 92
    1
제가 Promise.all(promises) 함수를 사용하여 여러 개의 Promise를 병렬로 처리하려고 하지만, 하나의 Promise가 실패하면 전체 Promise가 실패하는 것을 확인했습니다. 이 경우, Promise.all(promises)에서 하나의 Promise가 실패하면 에러는 어떻게 처리되는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  5일 전



    Promise.all(promises) 함수는 모든 Promise가 성공적으로 완료되는 경우에만 resolve를 반환합니다. 하나의 Promise가 실패하면 reject를 반환합니다.

    이러한 특성으로 인해 하나의 Promise가 실패하면 전체 Promise가 실패하는 것을 확인할 수 있습니다.

    Promise.all(promises)에서 하나의 Promise가 실패하면 에러는 다음과 같이 처리됩니다.

    1. 하나의 Promise가 실패하면 Promise.all(promises)는 즉시 reject를 반환합니다.
    2. reject를 반환하기 전에, Promise.all(promises)는 실패한 Promise를 포함한 모든 Promise의 상태를 확인합니다.
    3. 실패한 Promise를 제외한 나머지 Promise의 결과는 무시됩니다.
    4. Promise.all(promises)는 reject를 반환할 때, 실패한 Promise의 에러를 포함한 Error 객체를 반환합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    javascript
    
    const promises = [
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 1 성공');
    
        }, 1000);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          reject('Promise 2 실패');
    
        }, 2000);
    
      }),
    
      new Promise((resolve, reject) => {
    
        setTimeout(() => {
    
          resolve('Promise 3 성공');
    
        }, 3000);
    
      })
    
    ];
    
    
    
    Promise.all(promises)
    
      .then((results) => {
    
        console.log(results);
    
      })
    
      .catch((error) => {
    
        console.error(error);
    
      });
    
    


    이 코드를 실행하면, Promise.all(promises)는 첫 번째 Promise가 성공하고 두 번째 Promise가 실패하는 것을 확인할 수 있습니다. 따라서, Promise.all(promises)는 두 번째 Promise의 에러를 포함한 Error 객체를 반환합니다.

    #hostingforum.kr
    javascript
    
    // Promise 1 성공
    
    // Promise 2 실패
    
    // Error: Promise 2 실패
    
    


    이러한 특성으로 인해, Promise.all(promises) 함수를 사용할 때는 하나의 Promise가 실패하면 전체 Promise가 실패하는 것을 고려하여 에러를 처리해야 합니다.

    2025-04-17 11:19

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

검색

게시물 검색