node.js 如何在异步操作之外保存变量以访问它的回调?

普雅8366

请参阅下面的示例代码,我在 promise/Async 调用之外声明了一个变量,并且每个请求到达此行时都会为其分配值,现在我的问题是,如果许多请求到达并到达该console.log(something);行时到达同时:

  1. node.js 将每个请求视为一个对象并保留每个请求的something特定值,还是只打印最后一个的值?

  2. 如果它打印最后一个,我如何解决问题并保持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);
  });

});
昆汀

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 无关。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章