node.js事件轮询机制原理知识点


Posted in Javascript onDecember 22, 2019

借助libuv库实现的

概括事件轮询机制:分为六个阶段

1.timers 定时器阶段

计时和执行到点的定时器回调函数

2.pending callbacks

某些系统操作(例如TCP错误类型)

3.idle,prepare

4.poll轮询阶段(轮询队列)

如果轮询队列不为空,依次同步取出轮询队列中第一个回调函数,直到轮询队列为空或者达到系统最大限制

如果轮询队列为空

如果之前设置过setImmediate函数,直接进入下一个check阶段,如果之前没有设置过setImmediate函数,在当前 poll阶段等待,直到轮询队添加回调函数,就会去第一个情况执行,如果定时器到点了,他也会去下一个阶段

5.check查阶段

执行setImmediate设置的回调函数

6.close callbacks关闭阶段

close事件回调函数

process.nextTick()的意思就是定义出一个动作,pengd并且让这个动作在下一个事件轮询的时间点上执行。能在任意阶段优先执行

以上就是本次介绍的全部知识点内容,感谢大家的学习和对三水点靠木的支持。

Javascript 相关文章推荐
【消息提示组件】,兼容IE6/7&&FF2
Sep 04 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
May 07 Javascript
网页实时显示服务器时间和javscript自运行时钟
Jun 09 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
Jan 23 Javascript
如何减少浏览器的reflow和repaint
Feb 26 Javascript
jQuery 实现双击编辑表格功能
Jun 19 jQuery
JS中使用textPath实现线条上的文字
Dec 25 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
May 13 Javascript
vue组件表单数据回显验证及提交的实例代码
Aug 30 Javascript
详解微信小程序缓存--缓存时效性
May 02 Javascript
vue-router之解决addRoutes使用遇到的坑
Jul 19 Javascript
TypeScript 内置高级类型编程示例
Sep 23 Javascript
javascript实现fetch请求返回的统一拦截
Dec 22 #Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
Dec 22 #Javascript
判断JavaScript中的两个变量是否相等的操作符
Dec 21 #Javascript
javascript中的相等操作符(==与===区别)
Dec 21 #Javascript
JavaScript中的相等操作符使用详解
Dec 21 #Javascript
高性能js数组去重(12种方法,史上最全)
Dec 21 #Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
Dec 21 #Javascript
You might like
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
jQuery回到顶部的代码
2016/07/09 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
详解Vue串联过滤器的使用场景
2020/04/30 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
Python面向对象实现一个对象调用另一个对象操作示例
2019/04/08 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
python__new__内置静态方法使用解析
2020/01/07 Python
python如何绘制疫情图
2020/09/16 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
ORACLE十问
2015/04/20 面试题
自荐书范文范例
2014/02/13 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
2014年教研组工作总结
2014/11/26 职场文书