我是UnhandledRejection的新手。下面的方法应该抛出异常并终止流程,但它没有。请支持以任何方式解决它
案例1: 从承诺中获取价值作为真实和尝试的条件。但它被绕过并返回未处理的拒绝,抛出异常。
Utils.isMaximumLimitReached(id).then(isLimit=>{
console.log(isLimit); //true
if(isLimit){
throw "not allowed";
}
})
编辑: 案例3:这也是返回未处理的拒绝这是不允许的
const isMaximumLimitReached = coachingId => {
return db.coachingClassEntries
.findAndCountAll()
.then(counts => {
let numberOfEntries = 2;
//let maxEntries = counts.rows[0].coachingClass.maxEntries;
let maxEntries=2;
return new Promise((resolve,reject)=>{
if (numberOfEntries == maxEntries) {
reject('this is not allowed');
}
});
});
};
Utils.isMaximumLimitReached(data.coachingClassId).then().catch(error=>{
throw error;
})
答案 0 :(得分:1)
承诺拒绝通常在then
方法中进行第二次回调处理,在您的情况1中可能看起来像这样:
Utils.isMaximumLimitReached(id).then(()=>{
// everything is fine
}, (error) => {
// promise was rejected, handle error
console.log(error);
})
这样,isMaximumLimitReached
引起的任何拒绝都将在错误回调中处理。
答案 1 :(得分:1)
使用
更改Promise.rejectPromise.reject(new Error('409',msg)).then(function() {
// not called
}, function(error) {
console.log(error); // Stacktrace
});
希望这有助于解决您的问题。如果你想在决定使用什么之前抛出错误然后你check this。