본문 바로가기

javascript/pure

[자바스크립트] Promise.all / allSettled

 자바스크립트의 프로미스는 비동기 작업을 수행하는데 사용된다. 이때 다수의 프로미스 작업들에 대한 이행 여부를 검사하기 위해 다양한 메서드가 Promise 객체 내부에 존재한다. 

 그중 모든 프로미스의 이행을 대기하고 그에 대한 결과를 반환하는 유사 메서드 all 과 allSettled 가 존재한다.

Promise.all

const result_array = Promise.all([array of Promise object]);

Promise.all은 다수의 프로미스 객체들을 배열 형태로 입력받아 해당 프로미스 객체들의 수행 결과를 배열 형태로 반환한다. 이때 하나의 프로미스 객체만 거절(reject) 상태가 되더라도 전체가 거절된다는 특징이 있다. 하나만 실패하더라도 의미가 없는 경우 사용할 수 있다.

 

Promise.allSettled

const  = Promise.allSettled([array of Promise object]);

Promise.all과는 달리 각각의 상태와 수행 정보를 담은 객체 배열을 반환한다. 반환되는 객체가 가질 수 있는 상태는 fulfilled, rejected 로 2가지가 있다.

  • 성공한 경우 : { status: "fulfilled", value : 프로미스 반환 값 }
  • 실패한 경우 : { status: "rejected", reason : 발생한 에러 }

타입스크립트 환경에서는 status를 이용하여 narrowing 해야 value 및 reason에 접근할 수 있다.