2019-11-28
Node
0

目录

事件循环阶段
Node不同版本微任务的不同

在Node.js中,事件循环是一个非常重要的概念。事件循环是指Node.js在执行异步操作时,采用的一种事件驱动的机制。通过事件循环,Node.js可以实现高效的I/O操作,同时也可以避免出现阻塞或死锁的情况。

了解事件循环对于Node.js开发者来说非常重要,因为它涉及到Node.js的异步编程模型和运行机制。在本文中,我们将深入探讨Node.js事件循环的概念、运行机制和实现原理。

事件循环阶段

Node的事件循环分为多个阶段

  1. timers阶段
  2. pending/callback阶段
  3. idea阶段
  4. poll阶段
  5. check阶段
  6. close阶段

image.png

  • times阶段:执行setTimeout 和 setInterval的回调函数
  • pending/callback阶段:执行延迟到下一个循环迭代的I/O回调
  • idle:仅系统内部调用
  • poll:检索新的I/O事件,大部分I/O事件的回调在这里运行,清空队列以后,会去查询是否有setImmediate的调度,若有,则会等待setImmediate加入队列,然后执行,若没有setImmediate的调度,则会去检查是否有timers阶段的调度,若有,则会等待计时器加入队列,然后绕回到timers阶段进行执行,如果没有timers的调度,事件循环会阻塞在poll阶段
  • check:setImmediate的回调函数在这里执行
  • close:关闭阶段的回调函数执行,比如socket的关闭

Node不同版本微任务的不同

V11后:微任务的执行顺序和浏览器保持一致,每个宏任务结束以后查询是否有微任务

V11前:阶段结束后,去查询是否有微任务

process.nextTick的优先级比微任务高

本文作者:BARM

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!