请参阅下面的示例代码,我在promise / Async调用之外声明一个变量,当每个请求到达此行时,它的值都会被分配,现在我的问题是,如果有很多请求到达并达到当它同时到达console.log(something);
行时:
node.js将每个请求视为一个对象,并保持每个请求的something
值,或者只打印最后一个值?
如果打印最后一个,我该如何解决问题并保持something
特定于每个请求?
router.get('/test', function(req, res) {
var something = req["request's specific data"];
anAsyncCall(something2).then(function(data) {
//value of something?
console.log(something);
});
});
答案 0 :(得分:1)
简短回答:每个请求AFAIK独有
答案 1 :(得分:1)
使用var
关键字声明的变量是本地作用于声明它们的函数。
每次调用函数都会在该范围内创建一个新范围和一个新变量。
function myFunction(myValue) {
var copyOfMyValue = myValue; // For demonstration purposes. Function arguments are the same as variables declared with var
function showMyValue() {
console.log(copyOfMyValue);
}
return showMyValue;
}
setTimeout(myFunction(1), 100);
setTimeout(myFunction(2), 90);
setTimeout(myFunction(3), 80);
setTimeout(myFunction(4), 70);
setTimeout(myFunction(5), 60);

这是标准的JavaScript行为,并不是Node.JS特有的。
答案 2 :(得分:1)
var something
在函数function(req, res)
对/test
的每次网址调用都会创建一个something
的新实例,每个实例都是本地(和独立)的每个请求。
所以你的答案是:
答案:它将保持特定'
答案:不相关,因为1.; - )