对节点顺序规则感到困惑(同步/异步)

时间:2016-08-02 19:59:39

标签: javascript node.js http if-statement 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)

当客户端连接时,变量由客户端是否具有cookie来定义。但是,如果多个客户端几乎同时连接怎么办? Node如何处理它?<​​/ p>

客户端是否可能混淆变量,因为if / else语句在切换之前发生?我是否应该在每个if / else部分中放置2个开关副本?

或者没有区别?

1 个答案:

答案 0 :(得分:0)

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

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