Event Loop 机制概述

1. 为什么要学习事件循环机制 ?
学习事件循环可以让开发者明白 JavaScript 的运行机制是怎么样的。
2. 事件循环机制做的是什么事情?
事件循环机制用于管理异步 API 的回调函数什么时候回到主线程中执行。
Node.js 采用的是异步 I/O 模型。同步 API 在主线程中执行,异步 API 在底层的 C++ 维护的线程中
执行,异步 API 的回调函数在主线程中执行。在 JavaScript 应用运行时,众多异步 API 的回调函数
什么时候能回到主线程中调用呢?这就是事件循环机制做的事情,管理异步 API 的回调函数什么时
候回到主线程中执行。
3. 为什么这种机制叫做事件循环?
因为 Node.js 是事件驱动的。事件驱动就是当什么时候做什么事情,做的事情就定义在回调函数
中,可以将异步 API 的回调函数理解为事件处理函数,所以管理异步 API 回调函数什么时候回到主
线程中调用的机制叫做事件循环机制。
4.10. Event Loop 的六个阶段
事件循环是一个循环体,在循环体中有六个阶段,在每个阶段中,都有一个事件队列,不同的事件队列
存储了不同类型的异步 API 的回调函数。

 

1. Timers :用于存储定时器的回调函数 (setInterval, setTimeout)
2. Pending callbacks :执行与操作系统相关的回调函数,比如启动服务器端应用时监听端口操作的回
调函数就在这里调用。
3. Idle, prepare :系统内部使用。
4. IO Poll :存储 I/O 操作的回调函数队列,比如文件读写操作的回调函数。
如果事件队列中有回调函数,执行它们直到清空队列。
否则事件循环将在此阶段停留一段时间以等待新的回调函数进入,这个等待取决于以下两个条件:
1. setImmediate 队列 (check 阶段 ) 中存在要执行的回调函数 .
2. timers 队列中存在要执行的回调函数 . 在这种情况下 , 事件循环将移至 check 阶段 , 然后移至
Closing callbacks 阶段 , 并最终从 timers 阶段进入下一次循环。
5. Check :存储 setImmediate API 的回调函数。
6. Closing callbacks :执行与关闭事件相关的回调,例如关闭数据库连接的回调函数等。
循环体会不断运行以检测是否存在没有调用的回调函数,事件循环机制会按照先进先出的方式执行他们
直到队列为空。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值