nodejs 如何在嵌套的情况下排列 .catch



假设我有一些下面定义的函数。我的问题是,拥有一个 .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或承诺中都有两件事

  1. 如果查询是依赖的,则使用事务查询样式
  2. 如果查询是独立的,则使用批处理查询样式

需要更多 在这里查找交易和批处理 https://www.npmjs.com/package/mssql#batch-batch-callback

相关内容

最新更新