node单线程疑问?

既然node是单线程的,那么假如十个用户同时去请求服务器查询修改同一个数据,node这时只能处理一个请求,只能一个一个来执行.

let a='test'
router.get('/test/match',function(req,res){ 
      /*修改 a*/
    }

 

那么node怎么做到请求相互之间互不干扰的?因为是排队执行,像上面的全局变量a被修改后,下一个请求a变量值已经改变,会影响到下个请求处理.

阅读 2.4k
4 个回答

其实在任何情况下,都应该减少全局变量的使用,可以使用纯函数来避免这个问题

node 确实存在这个问题,所以在处理这部分的时候要特别注意。
单纯你的例子的话,放在回调函数内部,就不会影响其他用户了


router.get('/test/match',function(req,res){ 
    let a='test'
    /*修改 a*/
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题