JavaScript中Event Loop的分析

本篇文章给大家带来的内容是关于JavaScript中Event Loop的分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

什么是Event Loop?

官网解释

2936232493-5c98e7edb8ca5_articlex.png

立即学习“Java免费学习笔记(深入)”;

个人理解是js的单线程是他的任务栈是单线程,但他处理异步i/o的方法是依赖libuv开启线程池去处理,完成之后任务加到poll queue里,然后等任务栈的任务为空或事件到达阀值时,把poll queue和定时器的任务加到任务栈里,继续这个循环,这就是大体上的js的Event Loop。

结构

   ┌───────────────────────────┐┌─>│           timers          ││  └─────────────┬─────────────┘│  ┌─────────────┴─────────────┐│  │     pending callbacks     ││  └─────────────┬─────────────┘│  ┌─────────────┴─────────────┐│  │       idle, prepare       ││  └─────────────┬─────────────┘      ┌───────────────┐│  ┌─────────────┴─────────────┐      │   incoming:   ││  │           poll            │<─────┤  connections, ││  └─────────────┬─────────────┘      │   data, etc.  ││  ┌─────────────┴─────────────┐      └───────────────┘│  │           check           ││  └─────────────┬─────────────┘│  ┌─────────────┴─────────────┐└──┤      close callbacks      │   └───────────────────────────┘

登录后复制

timer:
定时任务,当到达阀值时,他不会立即执行,会等待任务栈的任务会阻塞他。

pending callbacks:
此阶段执行某些系统操作(例如TCP错误类型)的回调。例如,如果TCP套接字在尝试连接时收到,则某些*nix系统希望等待报告错误。这将排队等待在挂起的回调阶段执行。

pull:
这个阶段有两个主要功能:
 计算它应该阻塞和轮询I / O的时间,然后
 处理轮询队列中的事件。
当事件循环进入轮询阶段并且没有计划定时器时,将发生以下两种情况之一:

如果轮询队列不为空,则事件循环将遍历其同步执行它们的回调队列,直到队列已用尽,或者达到系统相关的硬限制。

如果轮询队列为空,则会发生以下两种情况之一:

如果脚本已执行setImmediate,则事件循环将结束poll阶段并继续执行check阶段以执行这些调度脚本。

如果脚本没有执行setImmediate,事件循环将等待回调被添加到poll queue中,然后立即执行。

一旦poll queue为空事件循环将检查timer,如果一个或多个定时器准备就绪,事件循环将回绕到timer阶段以执行那些timer的回调。

check
此阶段允许人员在轮询阶段完成后立即执行回调 。如果轮询阶段变为空闲并且存在setImmediate任务,那么事件循环直接跳到check执行而不是阻塞在poll阶段等待回调被加入。

setImmediate实际上是一个特殊的计时器,它在事件循环的一个单独阶段运行。它使用libuv API来调度在轮询阶段完成后执行的回调。

close callbacks

如果socket或handle突然关闭(例如socket.destroy()),则该 ‘close’事件将在此阶段发出。否则它将通过发射process.nextTick()。

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript视频教程栏目!

以上就是JavaScript中Event Loop的分析的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2732029.html

(0)
上一篇 2025年3月8日 00:35:14
下一篇 2025年2月24日 19:16:30

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论