Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在node.js中使用文件范围变量_Javascript_Node.js - Fatal编程技术网

Javascript 在node.js中使用文件范围变量

Javascript 在node.js中使用文件范围变量,javascript,node.js,Javascript,Node.js,初学者问题 在node.js中的服务器端运行: 如果我使用由export.function()设置的文件范围(甚至全局)变量,其中导出的函数通过ajax从客户端调用,如果多个请求来自不同的客户端,该变量现在是否容易出现意外结果 也就是说,我是否需要设置一个数组,以便每次调用export.function()时,它都会为特定的ajax请求添加一个新的文件范围实例?或者这是由node.js神奇地处理的,在node.js中,每个ajax请求都有自己的服务器实例?请求将共享相同的实例,因此您需要对此加以

初学者问题

在node.js中的服务器端运行:

如果我使用由export.function()设置的文件范围(甚至全局)变量,其中导出的函数通过ajax从客户端调用,如果多个请求来自不同的客户端,该变量现在是否容易出现意外结果


也就是说,我是否需要设置一个数组,以便每次调用export.function()时,它都会为特定的ajax请求添加一个新的文件范围实例?或者这是由node.js神奇地处理的,在node.js中,每个ajax请求都有自己的服务器实例?

请求将共享相同的实例,因此您需要对此加以防范。但是请注意,同步代码块将在执行切换到处理另一个请求之前完全执行,因此这简化了您需要执行的“保护”操作。

谢谢!我在异步POST/响应中使用这些全局变量,所以听起来似乎需要解决它。为了澄清这一点,解决这个问题的标准方法似乎是将全局变量附加到req。例如:exports.server_route(req,res){req.globals={g1:0,g2:“init”,g3:0};somefuncwithpassedcallback(函数(req,res){//通过req.globals.g1等访问全局);}函数somefuncwithpassedcallback(callback){callback(req,res);}然后始终调用参数列表中的所有内容,包括req和res(req用于访问请求和附加的全局变量,res用于在失败时生成响应,或者调用嵌套在某个回调中的正常响应)。