Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Sequence
- Andrew Ng
- scope
- Machine Learning
- ES6
- Linux
- HTTP
- 회고
- 데이터전송
- 러닝자바스크립트
- React
- 클로저
- NextJS
- nodejs
- 자바스크립트
- 1일1문장
- CSS
- docker
- 우선순위
- 스파르타코딩클럽
- javascript
- multer
- 개발공부
- 리눅스
- reactnative
- coursera
- 객체
- 끈기
- 자료구조
- Til
Archives
- Today
- Total
해나아부지 개발일지
Promise.all() vs Promise.allSettled() in javascript 본문
지금까지 여러가지 비동기 액션을 처리할 때 Promise.all()만 쓰셨다면 주목! 1가지 메서드가 더 있다는 것
두 메서드의 차이점을 알아봅시다.
우선 MDN 공식 문서를 봅시다.
1. Promise.all()은 input에 대한 결과값만을 담은 array result를 return 합니다.
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then((values) => {
console.log(values);
});
// Expected output: Array [3, 42, "foo"]
2. Promise.allSettled()은 input에 대한 상태와 결과값을 포함한 [object, object, ...] result를 return 합니다.
const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) => setTimeout(reject, 100, 'foo'));
const promises = [promise1, promise2];
Promise.allSettled(promises).
then((results) => console.log(result.status));
// Expected output:
// Array [Object { status: "fulfilled", value: 3 },
// Object { status: "rejected", reason: "foo" }]
# Promise.all()은 하나라도 rejected가 발생한다면 모두 error 처리 된다는 점이다!
# Promise.allSettled()는 각각의 Promise의 대해 처리 상태와 결과 값을 담은 배열을 반환하기 때문에
'rejected'된 Promise에 대해서 status 값에 따라 분기 처리만 해주면 된다는 말씀!
javascript의 array method 중에 every와 some과 비슷한 느낌이 드는군요.
결론
상황에 따라서 Promise.all과 Promise.allSettled를 적절하게 사용하면 될 것 같습니다.
- 모든 Promise가 통과되야 한다면 Promise.all
- 몇가지가 실패하더라도 통과한 Promise를 활용해야 하는 상황이라면 Promise.allSettled
'Developers > JavaScript' 카테고리의 다른 글
[책] 러닝 자바스크립트(3) - 배열, 객체와 배열의 쉼표, 맵과 셋 (0) | 2020.12.14 |
---|---|
[책] 러닝 자바스크립트(2) - 원시타입과 객체 (0) | 2020.12.09 |
[책] 러닝 자바스크립트(1) - 변수와 상수, 리터럴 (0) | 2020.12.08 |
[책]러닝 자바스크립트(init) (2) | 2020.12.08 |
자바스크립트 비동기처리(asynchronous javascript) (0) | 2020.08.12 |
Comments