[英]GWT : two DOM events on same div, priority and how to deactivate the second event when the first is called?
[英]DOM events priority in the event queue
假设我有这段代码:
$('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() 也进入事件队列。 假设它第一次到达那里时,setInterval 已经创建了 2 个回调函数。 由于这是一个与 DOM 相关的函数,它将重新渲染窗口,它会优先于这些函数吗?
在这个关于事件循环的演讲中,作者提到了一个渲染队列,它的优先级高于回调队列(通过setTimeout
和setInterval
等方法进行的回调)。 既然onClick()
做的是渲染相关的事情,那么它是进入这个队列还是进入常规的回调队列等待轮到呢?
好吧,我想我会试一试,但这个信息对我来说也是很新的。
由于这是一个与 DOM 相关的函数,它将重新渲染窗口,它会优先于这些函数吗?
不,我不相信函数本身会比那些区间内的函数有更高的优先级。 我不认为浏览器本身会知道点击回调实际上会改变 DOM。 在回调函数运行并且元素的文本发生更改后,浏览器将在有机会时重新绘制该节点。
既然onClick()做的是渲染相关的事情,那么它是进入这个队列还是进入常规的回调队列等待轮到呢?
我不相信onclick
处理程序必须做任何与渲染相关的事情。 是的,大多数时候我们将它编码为,但我认为它并不总是必须改变元素的外观。 它可以在后台发送 Ajax 请求。 它可以将某些内容记录到控制台。 你永远不知道。
还要记住, setInterval
不会将事件添加到事件队列中以在稍后的特定时间执行。 它等待一定时间,然后将该事件添加到事件队列中。 您可以在此处阅读更多相关信息。
希望我没有自欺欺人,因为直到几个月前我才真正开始深入研究 JS。 如果我有事请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.