setTimeout\ setImmediate \ nextTick 三者的区别问题

来源:3-7 环境 & 调试——process进程

_小_七_

2017-10-02

http://szimg.mukewang.com/59d25af80001307303480155.jpg

在事件循环中,消息队列只有当前队列 与 下一个消息队列, 但是老师你说的 nextTick插在当前事件循环的最后,而 setImmediate 在下一个的事件循环的开头,setTimeout(fn,0) 据我所知也是在下一个事件队列的开头,那这里setTimeout(fn,0) 与 setImmediate的优先级到底是谁高呢?还是说  setTimeout 是 在两个事件循环之间?应该没有事件循环之间的说法,据我所知,浏览器的setTimeout(fn,0) 其实与setTimeout(fn,4)无异,浏览器会默认限定最低时间是4ms, 所以我想知道这setTimeout与 setTImmediate的真正区别是啥? 

写回答

1回答

Samaritan

2017-10-03

首先 setTimeout(fn,0)  在浏览器应该是各 setTimeout(fn, 17) 一样,因为大部分显示器刷新率是 60 HZ

在 Node 端被限制为了 4ms

setTimeoout 和 setInterval 具体区别可以搜一下 Macrotask 和 Microtask

网上很多参考资料,尤其是 stackoverflow 上


理解 js 事件循环二 (macrotask 和 microtask)

setTimeout or setInterval?



 

0
0

Node.js入门到企业Web开发中的应用

Node.js是Web应用开发的一个福音,特别适合中小型系统的快速开发!

1580 学习 · 303 问题

查看课程