Node中的事件循环

前段时间较为系统性的学习了node,在学习过程中发现其中的事件循环机制与浏览器中的有很大的不同,今天特意查找相关资料,整理node的事件循环机制。

  1.异步API

           

    以上三个异步操作分别对应Timer、Poll、Check队列;

  2.事件循环顺序

  • 自上而下依次执行,会在Poll队列暂停判断等待(查看Timer和Check是否有任务执行)

                

  • 注意setImmediate与setTimeout,因为在node中setTimeout精度为1ms,因此即使延时设置为0,也会有1ms延时,如果反复执行下述代码,会出现不同的结果。

    

    为保证按照指定的顺序,可以把他们放到一个I/O操作的回调中,如下图所示。此时处于Poll队列,会依次往Check队列执行,因此会先调用setImmediate;

 

   3.process.nextTick(node特有)

    在启动事件循环之前会先清空nextTick任务。事件循环中从timer到check运行一周叫一个tick,process.nextTick即是为了在一个tick之前执行的。

   4.微任务队列

    比如promise.then....,会在nexttick之后事件循环之前。

   5.综述

posted @ 2024-05-17 11:24  3408GoGoGo  阅读(2)  评论(0编辑  收藏  举报