반응형
약속 : 다음 대 다음 + 잡기
이 질문에 이미 답변이 있습니다.
다음 2 개의 코드에 차이가 있습니까?
myPromise.then(function() {
console.log('success');
}).catch(function() {
console.log('error');
});
myPromise.then(function() {
console.log('success');
}, function() {
console.log('error');
});
내가 알고 then
및 catch
반환의 새로운 약속 해결 또는 콜백의 값을 반환으로 거부했다. 하지만 웹에서 2 개의 코드를보고 2 개의 코드의 실제 차이점에 대해 궁금합니다.
현재 코드에서는 console.log('success');
실패하지 않기 때문에 동일하게 작동합니다 .
하지만 이렇게 쓰면 ...
myPromise.then(function() {
// Some error may happen
throw('An exception that would be caught');
}).catch(function() {
console.log('error');
});
// Is the same as this, the errHandle tries to catch any unhandled error
// from previous result.
myPromise.then(func, null).then(null, errHandle);
myPromise.then(function() {
// Some error may happen
throw('An unhandled exception.');
}, function() {
// This won't log the error if it happens in the
// some error may happen block.
console.log('error');
});
// Is the same as this, the errHandle will handle errors from previous result,
// but it won't handle errs in func.
myPromise.then(func, errHandle)
두 번째 양식은 해당 오류를 포착 할 수 없지만 첫 번째 양식은 가능합니다.
테스트 용 스 니펫 :
// An function that may error and throw exception.
function funcThatThrows(test) {
throw(`oops - error in test ${test}`);
}
function errHandler(exception) {
console.log('We got an exception: ', exception);
}
// Expect: We got an exception: oops - error in test 1
Promise.resolve(1).then(funcThatThrows).catch(errHandler);
// Is the same as below, the errHandler tries to catch any unhandled error
// from previous result.
// Expect: We got an exception: oops - error in test 2
Promise.resolve(2).then(funcThatThrows, null).then(null, errHandler);
// If put the function and handler in the same then, the exception won't be caught.
// Expect: Uncaught (in promise) oops - error in test 3
Promise.resolve(3).then(funcThatThrows, errHandler);
Promise가 어떻게 구현되는지에 따라 달라집니다. 내가 아는 한 jQuery는 다른 방식으로 구현한다 .
The second you gave seems to be the jQuery version.
참고URL : https://stackoverflow.com/questions/33278280/promise-then-vs-then-catch
반응형
'programing tip' 카테고리의 다른 글
여러 CSS / JS 파일 결합 및 축소 (0) | 2020.09.08 |
---|---|
명령 프롬프트는 종료 대기 시점을 어떻게 알 수 있습니까? (0) | 2020.09.08 |
어셈블리 바인딩 리디렉션 : 방법 및 이유 (0) | 2020.09.08 |
PHP 세션 ID는 얼마나 고유합니까? (0) | 2020.09.08 |
Clojure 네임 스페이스를 여러 파일로 분할 (0) | 2020.09.08 |