【发布时间】:2016-01-18 12:23:57
【问题描述】:
假设我有这个代码:
$('button').click(function onClick() {
$('#divResult').text(Math.rand());
});
setInterval(function timeout() {
console.log("Hello");
}, 300);
setInterval(function timeout() {
console.log("Hi");
}, 200);
setInterval(function timeout() {
console.log("Yo!");
}, 100);
所以基本上,在 300 毫秒之后,我将在事件队列中拥有超过 1 个回调函数。现在,假设在一段时间后,用户点击了某些东西。这个点击事件得到处理,回调函数 onClick() 也进入事件队列。假设它第一次去那里,已经有 2 个由 setInterval 创建的回调函数。由于这是一个与 DOM 相关的函数,它会重新渲染窗口,它会优先于这些函数吗?
在this talk on event loops 中,作者提到了一个渲染队列,它的优先级高于回调队列(通过setTimeout 和setInterval 之类的方法进行回调)。既然onClick()做了渲染相关的事情,是进入这个队列还是进入常规回调队列等待轮到它呢?
【问题讨论】:
-
"在这个关于事件循环的演讲中......" - 什么演讲?
-
@Amit 抱歉,我忘了添加链接。固定。
-
我不记得曾在任何规范或 MDN(“圣经”)中看到过任何此类内容。我假设即使存在这样的事情,它也会依赖于实现。但我不知道是否适合...
-
我们不能运行您的代码来查看事件的顺序吗 - jsfiddle.net/brettdewoody/Ljmwqof0
标签: javascript callback dom-events