正确表达承诺

时间:2015-11-13 02:20:58

标签: javascript express promise

我在客户模块中有两个功能,都是承诺:

  1. 将http主体解析为customerData对象。

  2. 将customerData传递给saveCustomer以将其保存到数据库中。

  3. 在我的路线中,我这样做:

        customers.parse(body).then(function (customerData){        
            return customerData;
        }).then(function (merchantData){
            customers.saveCustomer(customerData).then(function (merchant) {
                res.success(merchant);
            })
        }).catch(function (err) {
            res.error(err);
        });
    

    我做得对吗?

1 个答案:

答案 0 :(得分:2)

可以简化如下:

customers.parse(body)
  .then(function (customerData){
    return customers.saveCustomer(customerData)
  }).then(function (merchant) {
    res.success(merchant);
  }, function (err) {
    res.error(err);
  });

说明:

  • 代码中的第一个then是多余的。
  • 最好将customers.saveCustomer链接到第一个承诺,而不是创建单独的链。
  • catch会错过customers.saveCustomer错误的情况,因为你没有返回那个承诺。