在网上看到很多人都说Nodejs性能非常棒,
但又说它是单线程的,而且还支持异步操作...
我看了有几个不明白的地方:
1,单线程中是如何进行异步的?只有一个线程,代码都顺序执行,如何异步呢?即使使用回调机制,比如文件读取完之后回调某方法,那么在读取中,由于只有一个线程,也不可能并行执行其他代码啊.
2,既然是单线程,那么在上一个用户访问结束前,新用户访问的代码是得不到执行的,这样一来效率应该非常低啊,为何还说性能很好?
3,就着第一个问题,想问一下在使用jquery中ajax请求的过程中,如果不将请求设置为同步的,请求之后的那部分代码会被执行,如果说js是单线程,那么是如何做到这种并行执行的?
谢谢各大神的耐心解答.
因为 JS 有事件循环这种东西: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/EventLoop
太长不看版:
JS 提供了一些方式(setTimeout, ajax...),可以把一些操作放到一个 todo list 里面。然后 js 的单线程就不断的从 todo list 里面找事来做。
网络编程性能是好,异步IO。适合开发WEB。