混淆了节点顺序规则(同步/asynchronous)
我的例子是一个简单的HTTP服务器:
http.createServer((req, res) => { if(req.method === `GET`){ if(req.headers.cookie === undefined){ let x = 1 let y = 2 let z = 30 } else{ let x = 10 let y = 20 let z = 3 } switch(req.url){ case `/`: // >>>> I need the appropriate variables here for the same client <<<< break case `/page`: // >>>> or here <<<< break default: res.statusCode = 404 res.end(`Error 404`) } } }).listen(3000)
当客户端连接时,variables由客户端是否有cookie来定义。 但是如果多个客户几乎同时连接呢? 节点如何处理?
客户端是否有可能混淆variables,因为if / else语句发生在交换机之前? 我是否应该在每个if / else部分中放置2个开关副本?
还是没有区别?
每个连接都是Node中自己的“堆栈”,所以它们将是独立的。 实际上,每个连接都有它自己的req
对象的副本/实例,并且您编写的代码只在该req
对象上工作。 所有其他的req
对象都是自己的堆栈。
代码将按顺序发生,所以你可以安全地在开关之前有if / else。