TIL: 여러가지 Promise 종류

Snoop So·2023년 4월 3일
0

Promise.all

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout( () => resolve("foo"), 1000);
});

Promise.all([promise1, promise2, promise3]).then(function(values) {
  console.log(values);
});

// expected output: Array [3, 42, "foo"]
  • 여러 프로미스를 한꺼번에 받아 처리 가능
  • 병렬로 처리되는 것을 기다렸다가 실행
  • 중간에 에러가 발생하면 즉시 reject 반환

Promise.allSettled

const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) => setTimeout(reject, 100, 'foo'));
const promises = [promise1, promise2];

Promise.allSettled(promises).
  then((results) => results.forEach((result) => console.log(result.status)));

// Expected output:
// "fulfilled"
// "rejected"
  • Promise.all과 유사하지만 중간에 에러가 발생해도 reject 로 빠지지 않고 모든 상태를 기다렸다가 결과를 알려주는 것이 다름

Promise.race

const promise1 = new Promise((resolve, reject) => {
  setTimeout(resolve, 500, 'one');
});

const promise2 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'two');
});

Promise.race([promise1, promise2]).then((value) => {
  console.log(value);
  // Both resolve, but promise2 is faster
});
// Expected output: "two"
  • 먼저 처리된 것을 결과 값으로 반환

Promise.any

  • 먼저 처리된 상태 중 fulfilled 상태만 먼저 반환
  • 만약 fulfilled 상태가 없으면 'AggregateError' 발생

0개의 댓글