Promise API

Promise.all

Promise.all은 프로미스로 구성된 배열(이터러블 객체)을 받아 프로미스로 반환한다.
배열 안의 프로미스가 다 실행이 된 후의 결과값을 담은 배열을 반환한다.
배열 안의 프로미스 중 한가지라도 error가 발생한다면, 배열 안의 값은 다 무시된다.
실행 시간에 관계 없이 순서대로 배열에 담기며, 가장 늦은 시간을 기준으로 배열에 담긴다.

Promise.all([
  new Promise(resolve => setTimeout(() => resolve('하나'), 3000)),
  new Promise(resolve => setTimeout(() => resolve('둘'), 2000)), 
  new Promise(resolve => setTimeout(() => resolve('셋'), 1000))  
]).then(num => console.log(num)); // ['하나', '둘', '셋']

Promise.allSettled

Promise.allsettled는 모든 배열의 프로미스들이 처리될 때 까지 기다린 후 반환 값으로
'fullfilled' 상태의 값과 'rejected' 상태의 이유가 담겨 처리 할 수 있다.

[
  {status: 'fulfilled', value: ...응답...},
  {status: 'fulfilled', value: ...응답...},
  {status: 'rejected', reason: ...에러 객체...}
] // 요런 식으로 담긴다.

Promise.race

Promise.race는 Promise.all과 비슷 하지만, 가장 먼저 처리되는 결과나 에러를 반환한다.

Promise.race([
  new Promise((resolve, reject) => setTimeout(() => reject(new Error("에러 발생!")), 3000)),
  new Promise((resolve, reject) => setTimeout(() => resolve('What???'), 4000)),
  new Promise((resolve, reject) => setTimeout(() => resolve(3), 6000))
]).then(alert); // Uncaught (in promise) Error: 에러 발생!

reference

profile
개발자를 꿈꾸는 자

0개의 댓글