广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >node中IO以及定时器优先级的示例分析
  • 493
分享到

node中IO以及定时器优先级的示例分析

2024-04-02 19:04:59 493人浏览 泡泡鱼
摘要

这篇文章主要介绍node中io以及定时器优先级的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!事件循环node著名的基于eventloop 的单线程事件循环处理模型,高效的异

这篇文章主要介绍nodeio以及定时器优先级的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

事件循环

node著名的基于eventloop 的单线程事件循环处理模型,高效的异步IO

异步API(定时器)

  • setTimeout 一次性定时器,执行一次,是把执行定时到到后面的队列

  • setInterval 是把执行定时到到后面的队列

setTimeout/setinterval 都会被插入到定时器观察者内部的一个红黑树中,每次Tick执行是,从红黑树中迭代定时器对象,检查超时时间,如果超过,形成事件,回调函数立即执行 时间复杂度是O(lg(n))
定时器实际上是不准确的,如果当前Tick阻塞执行很长时间,其实下次已经延误了很长时间

console.log("step one")
setTimeout(function(){
  console.log("settimeout2")
 },0)
 setInterval(function(){
   console.log("timeInterval")
 },1000)
let sum=0;
for(let i=0;i<=100000;i++){
  for(let j=0;j<=100000;j++){
    sum+=i*j
  }
}
console.log("setp two",sum)

执行结果
sogubaby ~/Desktop/learn_node/manyprocess$node sync.js 
step one
setp two 25000500002539570000
settimeout2
timeInterval
timeInterval
timeInterval
timeInterval

会发现,当前循环已经阻塞了Tick的执行,所以定时器被延误了
  • process.nextTick 会放到下次执行的Tick队列中,是在当前执行完,下次遍历前执行,时间复杂度是O(1),回调函数保存在数组

  • setImmediate 在当前队列立即执行,与process.nextTick 类似,也会延迟回调函数执行,回调函数保存在链表

但是setImmediate的优先级会低于process.nextTick ,主要是因为事件循环对观察者的检查顺序是有先后的,

process.nextTick 属于idle观察者  setImmediate属于check观察者
idle> I/o> check

console.log("step one")
setImmediate(function(){
  console.log("setInmediate")
})
let sum=0;
for(let i=0;i<=1000000;i++){
  for(let j=0;j<=100000;j++){
    sum+=i*j
  }
}
console.log("setp two",sum)

执行结果如下
sogubaby ~/Desktop/learn_node/manyprocess$node sync.js 
step one
setp two 2.500027500029909e+21
setInmediate

说明主线程会阻塞的,当前线程执行完后,才会进入到下一个循环

优先级

process.nextTick(function(){
  console.log("process.nextTick")
})
setImmediate(function(){
  console.log("setImmediate")
})
setTimeout(function(){
 console.log("setTimeout")
},0)
let sum=0;
console.log("setp two",sum)

执行结果
setp two 0
process.nextTick
setTimeout
setImmediate

以上是“node中IO以及定时器优先级的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: node中IO以及定时器优先级的示例分析

本文链接: https://www.lsjlt.com/news/78671.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • node中IO以及定时器优先级的示例分析
    这篇文章主要介绍node中IO以及定时器优先级的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!事件循环node著名的基于eventloop 的单线程事件循环处理模型,高效的异...
    99+
    2022-10-19
  • CSS中优先级的示例分析
    这期内容当中小编将会给大家带来有关CSS中优先级的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。计算优先级优先级是根据由每种选择器类型构成的级联字串计算而成的。他...
    99+
    2022-10-19
  • Javascript中访问器优先级的示例分析
    这篇文章主要介绍Javascript中访问器优先级是怎样的,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.正常使用 <script>     ...
    99+
    2023-06-14
  • css样式优先级及层叠顺序排序的示例分析
    这篇文章主要介绍css样式优先级及层叠顺序排序的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一般情况下: [1位重要标志位] > [4位特殊性标志] > 声明先后顺序 !important &g...
    99+
    2023-06-08
  • Javascript中定时器的示例分析
    小编给大家分享一下Javascript中定时器的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Javascript中有两种定时器,分别是setInterval()、setTimeout(),两者都是定时器,但是二者...
    99+
    2023-06-14
  • TCP中四种定时器的示例分析
    这篇文章主要介绍TCP中四种定时器的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!详解TCP的四种定时器在TCP协议中有的时候需要定期或者按照某个算法对某个事件进行触发,那么这个时候,TCP协议是使用定时器进...
    99+
    2023-06-09
  • js中递归和定时器的示例分析
    这篇文章将为大家详细讲解有关js中递归和定时器的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。递归:是一个函数通过调用自身的情况下构成的;首先上个例子:Funct...
    99+
    2022-10-19
  • JS中闭包与定时器的示例分析
    这篇文章主要介绍了JS中闭包与定时器的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是闭包 有什么作用闭包就是能够读取其他函数内...
    99+
    2022-10-19
  • 浏览器中重绘以及回流的示例分析
    这篇文章给大家分享的是有关浏览器中重绘以及回流的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.渲染树(render tree) 1.浏览器把获取到的HTML代码解析成...
    99+
    2022-10-19
  • angular2组件中定时刷新并清除定时器的示例分析
    这篇文章主要为大家展示了“angular2组件中定时刷新并清除定时器的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“angular2组件中定时刷新并清除...
    99+
    2022-10-19
  • Node.js中事件循环、定时器和process.nextTick()的示例分析
    这篇文章主要介绍Node.js中事件循环、定时器和process.nextTick()的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是事件循环尽管JavaScript是...
    99+
    2022-10-19
  • 浏览器中同源策略以及跨域的示例分析
    这篇文章主要介绍了浏览器中同源策略以及跨域的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是浏览器的同源策略,以及跨域?同源策略...
    99+
    2022-10-19
  • HTML5中Video属性及自定义播放器的示例分析
    这篇文章主要介绍了HTML5中Video属性及自定义播放器的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 使用方法: &nbs...
    99+
    2022-10-19
  • css中预处理器、后处理器以及选择器的示例分析
    这篇文章将为大家详细讲解有关css中预处理器、后处理器以及选择器的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。css预处理器css预处理器:用一种专门的编程语言...
    99+
    2022-10-19
  • Linux中的通配符以及正则表达式中的限定符的示例分析
    本篇文章为大家展示了Linux中的通配符以及正则表达式中的限定符的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。有段时间恶补了一下正则表达式。了解到 * 在正则表达式中是一种限定符。表示上一...
    99+
    2023-06-05
  • mysql 5.1事件调度器中状态查看、开启命令以及测试的示例分析
    这篇文章将为大家详细讲解有关mysql 5.1事件调度器中状态查看、开启命令以及测试的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 自MySQL5.1.6起,...
    99+
    2022-10-18
  • python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析
    这篇文章将为大家详细讲解有关python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、概率知识基础1.概率概率就是某件事情发生的可能性。2.联合概率包...
    99+
    2023-06-25
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作