首页 > 代码库 > nextTick setImmediate setTimeout(fn, 0)
nextTick setImmediate setTimeout(fn, 0)
-
setImmediate()
属于check观察者,其设置的回调函数,会插入到下次事件循环的末尾。 -
process.nextTick()
设置的回调函数,会在代码运行完成后立即执行,会在下次事件循环之前被调用,原文是 “the callback will fire as soon as the code runs to completion, but before going back to the event loop.” -
process.nextTick()
所设置的回调函数会存放到数组中,一次性执行所有回调函数。 -
setImmediate()
所设置的回调函数会存到到链表中,每次事件循环只执行链表中的一个回调函数。
Node.js的特点是事件循环,其中不同的事件会分配到不同的事件观察者身上,比如idle观察者,check观察者,I/O观察者等等,事件循环每次循环称为一次Tick,每次Tick按照先后顺序从事件观察者中取出事件进行处理。
process.nextTick()属于idle观察者, setImediate() 属于check观察者。在每一个轮询环检查中,idle观察者先于I/O观察者,I/O观察者先于check观察者。
setTimeout(fn, 0) 的方式比较浪费性能,(setTimeout的创建要涉及到创建红黑树等性能消耗), 用setImmediate()和process.nextTick()的操作相对比较轻量
nextTick setImmediate setTimeout(fn, 0)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。