Node.js的事件处理机制

Posted liuzhiqaingxyz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js的事件处理机制相关的知识,希望对你有一定的参考价值。

1. 为什么Node.js是单线程执行的

因为从javascript设计之初,JavaScript是用户与浏览器交互的,主要处理DOM; 这样决定了JavaScript是单线程执行,否则会出现问题;例如:JavaScript的两个线程同时处理同一个DOM元素,则会出现意想不到的错误;

所以Node.js依然是单线程执行;但是不代表Node.js是单线程的,实际上Node.js是多线程的,只是单线程执行而已

 

2. 非阻塞与任务队列机制

在实际情况下,用户的输入输出是很快速的,但是IO操作确很慢,不能让用户等待IO操作完了,用户才能再次输入输出,这样会导致用户的体验很不;

所以,Node.js的解决方案是用户的操作是非阻塞的,但是其他IO这些费时的操作先放入任务队列中;等用户的输入输出操作完了,再从任务队列中依照顺序执行返回结果

执行流程:

(1)Node.js单线程执行,所有同步任务在执行栈中执行

(2)所有异步任务返回了结果,就在任务队列中加入一个事件,以后进行异步回调

(3)所有的同步任务执行完,读取任务队列,开启执行异步回调

 

以上是关于Node.js的事件处理机制的主要内容,如果未能解决你的问题,请参考以下文章

node.js之事件机制

Node.js的事件处理机制

[nodejs基础]eventloop机制图解

Node.js 事件循环

Node.js 事件循环

Node.js 事件循环