Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么要使用next()函数?_Javascript_Node.js_Express - Fatal编程技术网

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。如果这个或任何其他的答案已经解决了你的问题,请考虑通过点击复选标记来接受它。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做,但是,这是社区确定解决问题的答案的方式。