每次收到新请求时是否重新初始化快速路由变量?

时间:2018-04-28 18:44:45

标签: node.js express

让我们说我在我的节点快递应用程序中有这条路线接收来自我的角度5前端的帖子请求。请参阅下面的帖子请求,其中我使用空字符串初始化3个变量。

app.post('/rolecompare', function (req, res) {

var inputfilerolecompare1 = '';
var inputfilerolecompare2 = '';
var filenametowrite = '';

//使用multer中间件我访问上传的文件,并为inputfilerolecompare1和inputfilerolecompare2分配完整的输入文件路径和名称,以便将文件存储在我的服务器上。此后,我在app.post方法中使用这些变量将数据从文件导入mongodb,并在其上运行一些python脚本来编写输出文件。

问题:在这种情况下,我可以说我的app.post收到了另一个请求,而inputfilerolecompare1 ='',inputfilerolecompare2 ='',filenametowrite ='& #39;再次重新初始化如何影响仍在处理的第一个请求。现在第一个请求是否会开始引用新的分配?

感谢您帮助我更好地理解这一点。

1 个答案:

答案 0 :(得分:1)

每个传入的请求都有自己的requestresponse个对象,您在一个请求对象中修改的内容与其他请求无关。在这方面,它们是完全分开的。

此外,请求处理程序本地声明的变量(例如inputfilerolecompare1)对于每个请求也是完全独立的。每个请求都是它自己的函数调用,因此每个函数都会获得自己的新局部变量集,就像常规函数调用一样。

  

虽然这种情况正在发生,但我可以说我的app.post会收到另一个请求并再次重新初始化inputfilerolecompare1 = '', inputfilerolecompare2 = '', filenametowrite = '',这又会如何影响仍在处理的第一个请求。

这些变量是一个特定请求的局部变量。因为它们被声明为局部变量(请求处理函数的本地变量),所以它们是单独的变量,每个请求都有单独的值。您在一个请求中将它们设置为与另一个请求无关。

  

现在第一个请求是否会开始引用新的分配?

没有。每个请求都有自己的这些变量副本。