반응형
Promise.all vs Promise.allSettled
기존의 Promise.all
과 병렬적으로 Promise
를 처리할 수 있다는 공통점을 가지고 있습니다.
그러나 Promise.all
을 통하여 실행시 Promise
의 resolve
상태에서만 값(value)
을 반환하지만, Promise.allSettled
을 사용시에는 값(value)
와 resolve
rejected
와 같은 상태(status)
를 객체형식으로 반환하게 됩니다.
Promise.all([Promise.resolve(1), Promise.resolve(2)])
.then(console.log); // [1, 2]
Promise.allSettled([Promise.resolve(1), Promise.resolve(2)])
.then(console.log); // [{status: "fulfilled", value: 1}, {status: "fulfilled", value: 2}]
또한 여러개의 Promise
중 하나라도 실패하게 된다면 Promise.all
은 catch
로 이동되어 처리되지만, Promise.allSettled
은 상태(status)
와 이유(reason)
값을 가진 객체를 반환합니다.
Promise.all([Promise.reject(1), Promise.resolve(2)])
.catch((err) => {
console.log('err', err); // err 1
});
Promise.allSettled([Promise.reject(1), Promise.resolve(2)])
.then(console.log); // [{status: "rejected", reason: 1}, {status: "fulfilled", value: 2}]
Promise.allSettled
를 사용하게 되면 어떠한 Promise
가 실패하더라도 모든 Promise
의 값을 반환하기 때문에 Promise.all
과 다르게 사용이 가능합니다.
Promise.allSetttled
ES2020에서 추가되었으며 또 다른 추가된 기능들을 확인하고자 한다면 여기에서 확인할 수 있습니다.
참고자료
https://stackoverflow.com/questions/59784175/differences-between-promise-all-and-promise-allsettled-in-js
https://github.com/tc39/proposal-promise-allSettled
반응형
'Develope > Javascript' 카테고리의 다른 글
[Javascript]Truthy, Falsy (0) | 2021.01.13 |
---|---|
[Javascript]올림, 내림, 반올림과 같은 수학적 처리를 위한 Math 객체 (0) | 2020.06.29 |
[Javascript]문자열에 한글, 영문자가 포함 되어있는지 확인하기 (0) | 2020.06.22 |
[Javascript]async, await 사용법 (0) | 2020.06.22 |
[Javascript]sort()를 사용하여 배열(Array)의 아이템 정렬하기 (0) | 2020.06.15 |