다음 코드를 사용하여 약속을 거부하면 첫 번째 console.log가 표시되지만 두 번째 console.log도 표시됩니다. 이것은 거절이 다음 "then()"에만 영향을주기 때문에 예상됩니다.콘솔에 오류 메시지를 보내지 않고 체인을 중지 할 수 있습니까?
질문은 체인에서 뛰어 내릴 수 있도록 루프의 "끊기"와 같은 연산자가 있습니까? 빠른 응답은 예기치 않은 reject() 또는 throw()와 함께 예가 될 수 있지만 두 방법 모두 콘솔에 오류 메시지를 보냅니다 (전체 코드 실행이 중단됩니다).
, 그것은 "깨끗하게"행해질 수 있습니까?
*, 나의 첫 번째 가정은가/오류를 거부 잡기하여이 트릭을 할 것이라고했다,하지만 경우에 당신이 then
방법에 두 번째 인수 (onRejected
기능)을 통과하면
Promise.resolve()
.then(function(){
do stuff
return Promise.resolve();
})
.then(function(){
if (a === 'this')
return Promise.resolve();
else
// is there any "break" equivalent here?
return Promise.reject();
})
.then(function(){
console.log('seen if not rejected');
},function(){
console.log('seen if rejected');
})
.then(function(){
console.log('seen all the time');
});
'ReferenceError가 : 문제가 아닌 정의되지 않은 (...)' –
@CoryDanielson. 그들은 거절 된 약속을 되 돌리는 것이 왜 사슬을 끝내지 않는지 묻습니다. –
@CoryDanielson 당신은'.then()'을 계속해서 호출하기 때문에 이것을 의사 코드 – Gerard