【发布时间】:2022-02-07 16:17:27
【问题描述】:
我有一个运行良好的中间件错误处理程序,但在处理承诺时,next(err) 和 return 和 return next(err) 似乎不会停止执行。发现错误时停止执行我的代码的正确方法是什么?
供参考:在这种情况下,err 是标准的错误类。
我认为您不需要 userProvider.fetchFriends 中的代码来帮助解决此问题,但如果有误请告诉我。
const uid = req.query.steamUserId;
//Use the userProvider to get steam friend data
const friendData = await userProvider.fetchFriends(uid)
.catch(err => {
return next(err); //Does not stop execution. Why? just next(err) doesn't either.
});
//Putting this after every catch works but seems very stupid. How do I avoid this?
if(res.writableEnded)
return;
...Other code that runs but causes errors
}
【问题讨论】:
-
为什么要混合 async/await 和 .then/.catch?鉴于您正在等待承诺,请使用 try/catch - 在回调中返回从不与在外部函数中返回相同。
-
将 await 放入一个“正常”的 try-catch 中
标签: javascript node.js express