繁体   English   中英

为什么我们使用next()函数?

[英]Why do we use next() function?

我们只在中间件或没有路由的功能中使用它吗? 我在我的身份验证文件中使用过它...

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()也是有意义的,因为在大多数情况下,你不希望执行“管道”中的其余中间件。

所以是的, next()被中间件或模块用于中间件调用。

我希望能回答你的问题。

如果你在这里谈论Express框架 - next函数只是一个回调告诉这个特定的中间件处理程序应该在Express中间件链中执行下一个操作。

如果您使用签名someHandler(req, res, next)定义任何处理程序并将其注册到app.use ,它将成为该链的一部分。 本质上它只是一个特殊的回调函数 - 忽略函数本身的目的 - 路由控制器,身份验证,正文解析器等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM