了解Express中的callback

我想从passport.js身份validation文档中了解以下示例:

app.get('/login', function(req, res, next) { passport.authenticate('local', function(err, user, info) { if (err) { return next(err); } if (!user) { return res.redirect('/login'); } req.logIn(user, function(err) { if (err) { return next(err); } return res.redirect('/users/' + user.username); }); })(req, res, next); //***UNSURE ABOUT THIS*** }); 

我明白代码的作用 – 但是我不知道callback函数结尾的(req, res, next)是什么。 为什么有必要? 它是否提供(err, user, info) ? 如果是这样的话,为什么我没有看到更多的以参数结尾的函数调用 – 这可能与传递next对象有关吗?

会喜欢有人帮助我提高我对这个概念的理解。

请求处理程序是Express中间件; 他们得到一个请求,一个响应和一个传递到下一层中间件的方法。 passport.authenticate 返回中间件,但它没有附加app.use() ,所以你必须手动传递适当的参数。

passport.authenticate的callback也有三个参数的事实只是一个巧合。 他们将不会有相同的价值观。