现象
我们由一段代码入手(文件名:02.js);
|
|
然后我们执行它
|
|
打开浏览器
我们能看到“你是第0个访问用户”,当我们刷新的时候,我们发现…
- 问题1:count并没有重新归零
- 问题2:count直接由0变到了2
我们来看下问题1,count并没有重新归零,说明我们在刷新页面的时候并不是重新执行了整个脚本,而是只执行了server里的代码
|
|
所以count不会重新归零,而是执行里面的count++,但是…应该由0变为1啊。
好了,我们来看第二个问题,为什么直接从0变为2,我们打开调试工具
我们发现,刷新页面的时候会发送两个请求,一个是localhost,一个是favicon.ico,所以
|
|
会执行两次,然后我们就会看见0,2,4,6…
解决办法
做一个判断 if(req.url === "/favicon.ico") return;
|
|
单线程
我们再把代码修改一下
|
|
我们再来执行它,然后刷新刷新,count计数到5的时候就会阻塞,我们看
这是,我们重新开一个页面,输入http://localhost:3000
我们发现新开的页面也是阻塞的,为什么呢?就是因为node是单线程,一个地方阻塞了,就都阻塞了。
本文结束,感谢阅读。
本文作者:melody0z
本文链接:https://melodyvoid.github.io/Node/verify-node-single-thread.html
欢迎转载,转载请注明文本链接