javascript - node中的process.nextTick 与 js定时器调用的原理区别问题?
本文介绍了javascript - node中的process.nextTick 与 js定时器调用的原理区别问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
按照《JavaScript高级程序设计》中关于定时器的描述,我觉得定时器也是需要等待之前事件队列中的事件执行完毕,才会执行定时器任务。
直到在看到《node.js高级编程》一书,上面有这么一段话
process.nextTick不也是需要等待之前事件队列中的事件执行完毕,才会执行回调函数吗?为什么比定时器好呢?
还有激活JavaScript的超时队列是什么东西?跟事件队列一样吗?
解决方案
"超时队列是什么东西"
不就是setTimeout
喽!!翻译一下不就是超时嘛。
至于process.nextTick
为什么比setTimeout
块,大概说下吧:
process.nextTick
把回调函数放到了事件队列的顶部,于是,当前同步代码(牛人们常说的执行栈)执行完毕后,从事件队列里挑回调函数时,最先被挑中的就是他了。顶部好理解吧?多个异步任务丢到了事件队列里,总有个先后的,顶部就是最前面。
setTimeout
比他慢好理解了么,这个东西再怎么设置超时时间为0
,在事件队列里他也总在process.nextTick
的后面。
说的不是很专业,但意思差不多了。如果需要更精准答案,最好google一下,或者翻node源码
这篇关于javascript - node中的process.nextTick 与 js定时器调用的原理区别问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文