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 相关文章推荐
Javascript 兼容firefox的一些问题
May 21 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
Aug 07 Javascript
一个Action如何调用两个不同的方法
May 22 Javascript
JavaScript中的this使用详解
Jul 27 Javascript
Vue.js每天必学之过渡与动画
Sep 06 Javascript
基于twbsPagination.js分页插件使用心得(分享)
Oct 21 Javascript
微信小程序 如何引入外部字体库iconfont的图标
Jan 31 Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 Javascript
Vue多组件仓库开发与发布详解
Feb 28 Javascript
Layui数据表格跳转到指定页的实现方法
Sep 05 Javascript
javascript 原型与原型链的理解及实例分析
Nov 23 Javascript
使用vue实现一个电子签名组件的示例代码
Jan 06 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
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
php去除重复字的实现代码
2011/09/16 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
SWFObject Flash js调用类
2008/07/08 Javascript
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
JavaScript 如何在浏览器中使用摄像头
2020/12/02 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
[43:47]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第一场 12.09
2020/12/11 DOTA
python装饰器使用方法实例
2013/11/21 Python
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
python实现统计代码行数的方法
2015/05/22 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
Python企业编码生成系统之系统主要函数设计详解
2019/07/26 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
物流创业计划书
2014/02/01 职场文书
论文诚信承诺书
2014/05/23 职场文书
群众路线问题查摆对照检查材料
2014/10/04 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
三行辞职书范文
2015/02/26 职场文书
员工安全责任协议书
2016/03/22 职场文书
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python