我一直在使用拒绝来结束承诺,但我有一种情况使用Mongoose(有承诺)我需要拒绝。我抛出一个错误,似乎一切都好。这是个好主意吗?
my Method = function() {
return User.findById(id).exec()
.then(function(user) {
if(!user) throw new Error('not found');
// Do stuff that continues chain
return abc();
})
.then(function(abcResult) {
});
};
在我的控制器中,错误成功登陆了promise错误函数:
myMethod('123').then(function(res) {
//result from abc();
}, function(err) {
//status 404
});
答案 0 :(得分:1)
通常,您会在同步代码中引发异常的任何地方提出拒绝(可能是通过抛出异常)。
客观地 - 如果您认为在同步代码中这很好:
function method(id){
var user = findById(id);
if(!user) throw new Error('not found');
var res = abc();
return bcdEf(res);
}
并且:
try{
var res = myMethod('123');
// handle result
} catch(e){
return 404;
}
很好 - 那么你的承诺模式很好,因为它基本上模拟了相同的东西。