【问题标题】: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 副本吗?

还是没有区别?

【问题讨论】:

    标签: javascript node.js http if-statement asynchronous


    【解决方案1】:

    每个连接在 Node 中都是它自己的“堆栈”,因此它们是独立的。实际上,每个连接都将拥有自己的 req 对象的副本/实例,而您编写的代码仅适用于该 req 对象。所有其他存在的req 对象都是它们自己的堆栈。

    代码将按顺序发生,因此您可以安全地在切换之前使用 if/else。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多