对节点顺序规则感到困惑(同步/异步)
Posted
技术标签:
【中文标题】对节点顺序规则感到困惑(同步/异步)【英文标题】:Confused about Node order rules (synchronous/asynchronous) 【发布时间】:2016-12-08 08:08:06 【问题描述】:我的例子是一个简单的 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)
当客户端连接时,变量由客户端是否有 cookie 定义。但是如果多个客户端几乎同时连接呢? Node 是如何处理的?
客户端是否有可能混淆变量,因为 if/else 语句发生在 switch 之前?我应该在每个 if/else 部分中放置 2 个 switch 副本吗?
还是没有区别?
【问题讨论】:
【参考方案1】:每个连接在 Node 中都是它自己的“堆栈”,因此它们是独立的。实际上,每个连接都将拥有自己的 req
对象的副本/实例,而您编写的代码仅适用于该 req
对象。所有其他存在的req
对象都是它们自己的堆栈。
代码将按顺序发生,因此您可以安全地在切换之前使用 if/else。
【讨论】:
以上是关于对节点顺序规则感到困惑(同步/异步)的主要内容,如果未能解决你的问题,请参考以下文章