抛出错误以结束承诺链
Throwing error to end promise chain
我一直在使用 reject 来结束 promises,但在使用 Mongoose(内置 promises)的情况下我需要拒绝。我抛出一个错误,一切似乎都很好。这是个好主意吗?
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
});
通常您会在同步代码中抛出异常的任何地方提出拒绝(可能通过抛出异常)。
客观 - 如果您认为这在同步代码中很好:
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;
}
很好 - 那么您的 promise 模式就很好,因为它基本上模拟了相同的事物。
我一直在使用 reject 来结束 promises,但在使用 Mongoose(内置 promises)的情况下我需要拒绝。我抛出一个错误,一切似乎都很好。这是个好主意吗?
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
});
通常您会在同步代码中抛出异常的任何地方提出拒绝(可能通过抛出异常)。
客观 - 如果您认为这在同步代码中很好:
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;
}
很好 - 那么您的 promise 模式就很好,因为它基本上模拟了相同的事物。