Javascript 为什么要使用next()函数?
我们是只在中间产品中使用它,还是在没有路由的功能中使用它?我已经在我的身份验证文件中使用了它Javascript 为什么要使用next()函数?,javascript,node.js,express,Javascript,Node.js,Express,我们是只在中间产品中使用它,还是在没有路由的功能中使用它?我已经在我的身份验证文件中使用了它 function ensureAuthenticated(req, res, next){ if(req.isAuthenticated()){ return next(); } else { req.flash('error_msg' , 'Please login First...') res.redirect('/users/login'); } } 执行它是为了
function ensureAuthenticated(req, res, next){
if(req.isAuthenticated()){
return next();
} else {
req.flash('error_msg' , 'Please login First...')
res.redirect('/users/login');
}
}
执行它是为了执行管道中的下一个中间件。如果您不手动执行它,您可能会将它传递给另一个为您执行它的模块。否则,如果不执行
next
,则会缩短“管道”,即您的是最后一个运行的中间件
在您的情况下,在对用户进行身份验证时调用next()
非常有意义。将控件传递给下一个中间件。如果已经确定用户未通过身份验证,那么不调用next()
也是有意义的,因为在大多数情况下,您不希望执行“管道”中的其余中间件
因此,是的,next()
由中间件使用,或者由中间件调用的模块
我希望这能回答您的问题。如果您在这里谈论Express framework-
next
函数只是一个回调,告诉您这个特定的中间件处理程序应该执行Express中间件链中的下一个操作
如果您使用签名
someHandler(req,res,next)
定义任何处理程序,并将其注册到app.use
,它将成为该链的一部分。本质上,它只是一个特殊的回调函数——忽略函数本身的用途——路由控制器、身份验证、主体解析器等。Hi@Linux。如果这个或任何其他的答案已经解决了你的问题,请考虑通过点击复选标记来接受它。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做,但是,这是社区确定解决问题的答案的方式。