notes

Promise.allSettled2020. 10. 23.

모든 promise가 resolve/reject 되기를 기다렸다가 각 promise의 result를 반환한다.

Promise.all과 다른점

  1. promise 중 reject가 있어도 일단 모두 pending 상태를 벗어나길 기다렸다가 결과값을 반환한다.
  2. reject를 따로 하지 않고 반환값을 변경하므로 catch를 타지 않는다.
  3. 대신 반환 결과값이 보통의 promise와 다르다. Promise<T>가 아니고 PromiseSettledResult<T>를 반환.
  4. PromiseSettledResult는 아래와 같이 생겼다.
// fullfiled
{
  status: "fullfiled",
  value: T
}

// rejected
{
  status: "rejected",
  reason: any
}
// fullfiled
{
  status: "fullfiled",
  value: T
}

// rejected
{
  status: "rejected",
  reason: any
}

실제로 돌려보면 아래와 같다.

Screen Shot 2020-10-23 at 12 04 57 PM Playground

Ref

Promise.allSettled

Tags