快速路线设置如下
var users = require('../../app/controllers/users.server.controller');
// Set up the 'signout' route
app.get('/signout', users.signout);
但是,由于括号不存在,这意味着函数 users.signout 被传递但没有执行?
github上的文件可以找到here
users.signout 函数如下所示
// Create a new controller method for signing out
exports.signout = function(req, res) {
// Use the Passport 'logout' method to logout
req.logout();
// Redirect the user back to the main application page
res.redirect('/');
};
github上的文件可以找到here
为什么要执行users.signout? req 和 res 参数是如何传递的?
最佳答案
当您使用时
app.get('/signout', users.signout);
Express.js 基本上在内部存储给定的函数 users.signout
并保持与 /signout
路径的关联。
当在此路由上发出请求时,Express.js 将获取相应的存储函数并调用它,大致形式如下:
// `storedFunction` corresponds to your `users.signout` function
storedFunction(expressReq, expressRes, expressNextCallback);
如果你要在调用中调用users.signout
函数,即
app.get('/signout', users.signout());
您将无法获取 req
和 res
参数,并且 users.signout
函数实际上会立即执行,这意味着 app.get
函数实际上会接收函数的结果。
您可以阅读有关此的更多信息 in the documentation 。希望对您有帮助!
关于javascript - 快速处理函数参数执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34158327/