node.js - 如何避免在 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:{}});
});
一开始我只放了最后一个,但它没有捕捉到另一个调用中的其他错误,如何避免重复相同的代码,这真的很不漂亮?
谢谢你
解决方案
使用 async await 并将您的代码包装在 try catch 块中。例子:
async handlePromise(){
try {
const fist_prmise = await FistPromise();
const second_promise = await SecondPromise();
}catch(e){
console.log(e)
}
}
第二个承诺等到第一个承诺解决
推荐阅读
- c++ - SDL Window 会导致鼠标每隔几秒冻结一次
- php - 为什么我在尝试访问 Paysafe Api 服务器时收到错误 500?
- android - BottomAppBar 未正确加载
- solr - Solr - 获取更多下一个“cursorMark”索引以实现真正的分页
- kotlin-coroutines - 注意到奇怪的行为,不确定它是否错误地使用了 coroutineScope
- python - 如何使用 BeautifulSoup 从 div 部分中提取 str
- python - 如何将字典中的值与字符串中的多个元素相加?
- android - 为什么模拟器在 android studio 和 Genymotion 中运行缓慢?
- hibernate - 使用 Spring Data 刷新后加载完整对象
- python - Pandas 数据框在 Windows 中显示两次行