gpt4 book ai didi

node.js - 在node.js中,使用常用的异步包装器来捕获和转发错误(req,res,next)从哪里来?

转载 作者:行者123 更新时间:2023-12-03 07:51:47 27 4
gpt4 key购买 nike

环境: Node.js,快速
Mongoose的创建者和首席维护者Valeri Karpov构建了一个简单且广泛使用的异步包装器,用于捕获错误并将错误转发到默认的Express错误处理程序。
您可以在这里阅读有关他的错误处理程序的信息The 80/20 Guide to Express Error Handling
这就是他使用的模式。

function wrapAsync(wrappedRoute) {

return function(req, res, next) {

wrappedRoute(req, res, next).catch(next);

};

}
wrapAsync用于包装这样的异步路由,
exports.homePage = wrapAsync(async function(req, res) {

let myVariable = await accessSomethingRemote();

res.render('homepage', { myVariable });

});
wrapAsync内部,下面引用的行很有意义。异步函数返回一个Promise,可以将 .catch()添加到Promise中以捕获错误。 next将错误转发到默认的Express错误处理程序。
wrappedRoute(req, res, next).catch(next);
但是,我并不完全了解上面的线的机制。
return function(req, res, next) {
问题: req, res, next来自哪里?它们没有在 wrapAsync中声明,也没有明确地作为参数传递。

最佳答案

function(req, res, next)是回调函数。应该在其他地方调用它,而不是在此片段中。如果使用Express,则Express会根据请求使用相应的参数req, res, next对其进行调用。

关于node.js - 在node.js中,使用常用的异步包装器来捕获和转发错误(req,res,next)从哪里来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64707354/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com