이 주제에 대해 여러 기사를 읽었지만 Promise.reject
오류와 던지기 사이에 차이가 있는지는 분명하지 않습니다 . 예를 들어
Promise.reject 사용
return asyncIsPermitted()
.then(function(result) {
if (result === true) {
return true;
}
else {
return Promise.reject(new PermissionDenied());
}
});
던지기 사용하기
return asyncIsPermitted()
.then(function(result) {
if (result === true) {
return true;
}
else {
throw new PermissionDenied();
}
});
내가 선호 throw
하는 것은 더 짧기 때문에 단순히 사용하는 것이지만 다른 것보다 이점이 있는지 궁금합니다.
throw
은 setTimeout과 같은 비동기 콜백 내에서 던져지면 약속이 거부되지 않는다는 것입니다. jsfiddle.net/m07van33 @Blondie 귀하의 답변이 정확했습니다.
reject
매개 변수 목록에서 생략 할 수 있기 때문에 throw를 사용하는 것을 선호 합니다.
.then()
핸들러는 던져진 예외를 catch하고 자동으로 거부 약속으로 변합니다. throw 된 예외가 실행하는 것이 특히 빠르지 않다는 것을 읽었으므로 거부 된 약속을 반환하는 것이 약간 더 빠를 수도 있지만 여러 중요 브라우저에서 테스트를 고안해야한다고 생각합니다. 나는throw
가독성을 좋아 하기 때문에 개인적으로 사용 합니다.