假设我有一些下面定义的函数。我的问题是,拥有一个 .catch 语句是否适用于任意数量的嵌套 .then?
myModelName.findOne({blah: blah}).then(function(user)
{
if(user)
{
anotherModel.create({blah blah params}).then(function(user){
response back with something;
})
// Should I catch again here for this error or the catch stament below will catch it.
}
}).catch(function(error){
response back with error;
});
我知道有更好的方法可以做到这一点,但我只是想了解这种情况。
这取决于
您的用例。您有多个嵌套的catch
调用,或者只有一个:
myModelName.findOne({blah: blah})
.then(function(user) {
if(user) {
return anotherModel.create({blah blah params});
}
return user;
})
.catch(function(error){
response back with error;
});
您也可以在create
后直接附加then
呼叫。但重要的是你要回报承诺。否则无法捕捉。
几乎每个ORM或承诺中都有两件事
- 如果查询是依赖的,则使用事务查询样式
- 如果查询是独立的,则使用批处理查询样式
需要更多 在这里查找交易和批处理 https://www.npmjs.com/package/mssql#batch-batch-callback