首页 > 解决方案 > 如何避免在 express node.js 中捕获冗余

问题描述

我在 Route 内部的一个进程中有多个调用,我发现自己不得不多次复制“catch”进程:

 Marque.one(createOrder.Order_marque).then(function(m){ 
    Forfaits.oneByIdExt(id).then(function(forfait) { 
        createOrder["donneur_ordre_id"] = parseInt(forfait[0].donneur_ordre_id)
        createOrder["structure_juridique_id"] = parseInt(forfait[0].structure_juridique_id)
        OrderEntries.insertOrderEntries(m[0].Marque, idPlan, createUser, createOrder, req.user.id).then(function (data) {
            Order.createOrder(createOrder, createUser, req.body.Cart) 
            .then(function (num_cmd) {
                if(forfait[0].tid != null){
                    OrderTP.insert(createTP).then(function (){
                        res.status(200).json({return: 200, returnLabel: 'OK', data: {num_cmd}});
                    })
                }else {
                    res.status(200).json({return: 200, returnLabel: 'OK', data: {num_cmd}});
                }
            }).catch(function (error) {
                res.status(500).json({return: 500, returnLabel: 'KO', data:{}});
            });
        }).catch(function (error) {
            res.status(500).json({return: 500, returnLabel: 'KO', data:{}});
        });
    }).catch(function (error) {
        res.status(500).json({return: 500, returnLabel: 'KO', data:{}});
    });
}).catch(function (error) {
    res.status(500).json({return: 500, returnLabel: 'KO', data:{}});
});

一开始我只放了最后一个,但它没有捕捉到另一个调用中的其他错误,如何避免重复相同的代码,这真的很不漂亮?

谢谢你

标签: node.jsexpress

解决方案


使用 async await 并将您的代码包装在 try catch 块中。例子:

async handlePromise(){
  try {
     const fist_prmise = await FistPromise();
     const second_promise = await SecondPromise();
  }catch(e){
     console.log(e)
  }
}

第二个承诺等到第一个承诺解决


推荐阅读