728x90
반응형
의문점이 생긴 이유
Promise가 에러를 처리하는 방법은 2가지가 있다.
1. .then()의 두 번째 인자로 에러를 처리하는 방법
2. .catch()를 이용하는 방법
둘 중에 어떤 방법이 더 효율적일까? 라는 궁금점이 생겨 작성해보았다.
728x90
예제 코드와 콘솔창 확인
1. .then()의 두 번째 인자로 에러를 처리하는 경우**
function getData() {
return new Promise(function(resolve, reject) {
resolve('hi');
});
}
getData().then(function(result) {
console.log(result);
throw new Error("Error in then()"); // Uncaught (in promise) Error: Error in then()
}, function(err) {
console.log('then error : ', err);
});
![](https://blog.kakaocdn.net/dn/lT7Qz/btrYlzYIDRs/5XWQMyniMUkAJgyR0MF60k/img.png)
2. .catch()로 에러를 처리하는 경우
function getData() {
return new Promise(function(resolve, reject) {
resolve('hi');
});
}
getData().then(function(result) {
console.log(result); // hi
throw new Error("Error in then()");
}).catch(function(err) {
console.log('then error : ', err); // then error : Error: Error in then()
});
![](https://blog.kakaocdn.net/dn/bjHMqz/btrYmySLHty/pzUKVRXgNeaOfD0fYVaXmK/img.png)
반응형
결론
결론적으로 가급적 .catch()로 에러를 처리하는 게 더 효율적이다. 위의 코드에서 볼 수 있듯이 .then()의 두 번째 인자로 에러를 처리하게 되면 첫 번째 콜백 함수 내부에서 오류가 나는 경우 두 번째 콜백 함수를 검사하지 않기 때문에 오류를 제대로 잡아내지 못하기 때문이다.
참고자료
728x90
반응형
'의문점 해결하기' 카테고리의 다른 글
react에서 CSS 폴더를 따로 만들었을 때, CSS 코드는 언제 변환될까? (0) | 2023.05.31 |
---|---|
[react] 언제 memoization을 해야 할까? (0) | 2023.05.07 |
[JS] [12, 13, 1, 2]를 sort()한 결과가 sort((a,b) => a-b)한 결과랑 같을까? (2) | 2023.05.01 |
localStorage.getItem()을 상수로 빼서 사용하면 동작하지 않는 이유 (0) | 2023.04.15 |
댓글