Javascript 基本catch块中未处理的承诺拒绝
我试图将一个错误从一个函数抛出到另一个函数,并发送res.status(402)。我用最基本的方法把它放在一个try-catch块中,但仍然得到了错误 :未处理的拒绝承诺。此错误源于 在没有catch块的异步函数内部 这是调用函数:Javascript 基本catch块中未处理的承诺拒绝,javascript,node.js,error-handling,Javascript,Node.js,Error Handling,我试图将一个错误从一个函数抛出到另一个函数,并发送res.status(402)。我用最基本的方法把它放在一个try-catch块中,但仍然得到了错误 :未处理的拒绝承诺。此错误源于 在没有catch块的异步函数内部 这是调用函数: const validateAction=async(req,res)=>{ const{action,url,mail,orderId}=req.body; 试一试{ requestAction(操作、url、邮件、订单ID); }捕捉(错误){ 控制台错误(e
const validateAction=async(req,res)=>{
const{action,url,mail,orderId}=req.body;
试一试{
requestAction(操作、url、邮件、订单ID);
}捕捉(错误){
控制台错误(err);
资源状态(402)。发送({
现状:402,
错误:“错误”,
});
}
您需要在承诺链中添加额外的捕获
,例如:
const validateAction = async (req, res) => {
const { action, url, mail, orderId } = req.body;
requestAction(action, url, mail, orderId);
}
const requestAction = async (action, url, mail, oderId) => {
const result = actions.find((actionFind) => actionFind.action === action);
await axios({
//change the action to "add"
method: "post",
url: "XXXXXXXXXXXXXXXXXXXX",
data: {
key: "XXXXXXXXXXXXXXXXXXXXXXXX",
action: "XXXXX",
service: XXXXXX,
quantity: XXXXXXXXXX,
},
}).then(
(response) => {
if (response.data.error) {
sendLog(
` ${response.data.error} --- URL:${url} ACTION:${action} QUANTITY:${result.quantity} ID:${result.id}`,
"error"
);
throw response.data.error;
} else {
sendMail(mail);
sendLog(
` Succesfully sent it --- URL:${url} ACTION:${action} QUANTITY:${result.quantity} ID:${result.id} To ${mail}`,
"info"
);
}
}).catch(() => {
console.error(err);
res.status(402).send({
status: 402,
error: "BUG",
});
});
};
基本上需要添加一个 等待因此等待请求操作(操作、url、邮件、订单ID) 在请求操作调用之前。
感谢Felix Kling
等待请求操作(操作、url、邮件、订单ID);
。您可能需要->等待请求操作(
是的,基本而简单。我的坏。。