似乎req
andres
变量在 Express 中具有全局范围(例如,无论函数范围如何,这些变量都可以访问)。这是如何在不引起同时客户端之间冲突的情况下实现的?
问问题
1441 次
1 回答
6
它们没有全局范围。
路线
该路由为每个路由获取一个处理函数。该路线通过req
andres
对象。
app.get('/my-route', myHandler);
处理程序
您的处理程序接收这些对象并使用它们。
exports.myHandler = function(req, res) {
res.send("Hello world");
);
闭包
当您进行数据库调用(或任何其他 io 绑定调用)时,您会向它传递一个回调。req
和res
对象作为闭包存在于该回调中。
exports.myHandler = function(req, res) {
var weekday = req.query.weekday || "today";
db.getWeather(weekday, function(err, result) {
// `res` here is a closure
if(err) { res.send(500,"Server Error"); return; }
res.send(result);
});
};
关于闭包的更多信息: JavaScript 闭包是如何工作的?
于 2013-06-03T18:09:12.123 回答