Dev./javascript

[JS] Promise.allSettled 사용하기

인쥭 2021. 11. 30. 14:49
반응형
 

Promise.allSettled() - JavaScript | MDN

Promise.allSettled() 메서드는 주어진 모든 프로미스를 이행하거나 거부한 후, 각 프로미스에 대한 결과를 나타내는 객체 배열을 반환합니다.

developer.mozilla.org

// 1.
const promises = [ 
  // some promises...
];

// 2.
const responses = await Promise.allSettled(promises);

// 3.
let results = [];
for(const { status, value = undefined } of responses) {
  if(status === 'fulfilled')
    results.push(value);
}
  1. Promise들을 포함하는 배열이 있다고 가정한다.
    promises.push(new Promise((resolve, reject) => { ... })); 의 형식으로 추가할 수 있다!
  2. 모든 promises 배열의 Promise들이 모드 settled(fulfilled 또는 rejected 상태)가 될 때까지 기다린 후 결과를 responses 배열에 담는다.
  3. Promise.allSettled의 결과는 { status: 'fulfilled', value: ~ } 또는 { status: 'rejected', reason: ~ }의 형태로 반환된다.
    이를 이용하여 원하는 동작을 구현하자