Node 事件循环
我们知道,Node是基于Chrome V8 引擎的,也就是说它也有js引擎的事件循环也就是 Event Loop 机制。但是Node是运行在服务端的,是有区别于浏览器端的。比如比浏览器的异步API多了 setImmediate, process.nextTick 等。那么事件循环的机制也肯定是不一样的。下面我们就来看下 Node 的事件循环是怎么样的一个运作。 Node 事件循环 1. Node 的事件循环可以简单地看成是由一个 线程(即js主线程) 跟 好几个队列(比如nextTickQueue, microTaskQueue 等)组成的。主线程在不停地从队列中获取任务并执行,类似于在 while(true) {} 里面一直不断地循环 2. 事件循环是在主线程上面完成的 3. 事件循环包括同步任务跟异步任务,同步任务的执行优先级大于异步任务,也就是同步任务永远是在异步任务之前执行的: 1 console.log('我是同步任务,第一个输出') 2 process.nextTick(() => { 3 console.log('我是异步任务,第三个输出') 4 }) 5 setTimeout(() => { 6 console.log('我是异步任务,第四个输出') 7 }) 8 setImmediate(() => { 9 console.log('我是异步任务,第五个输出')