我正在阅读有关事件队列的文章。
并且作者说“事件队列中的函数在发现主执行堆栈为空之前不会执行”
为了证明这一点,他提供了以下示例
function documentClickHandler() {
console.log('CLICK!!!');
}
document.addEventListener('click', documentClickHandler);
function a() {
const fiveSecondsLater = new Date().getTime() + 5000;
while (new Date().getTime() < fiveSecondsLater) {}
}
a();
Click here!
因此,在这种情况下,documentClickHandler
进入事件队列。并且在主执行堆栈为空documentClickHandler
之前不会执行该函数。在这种情况下,直到函数完成它的工作,documentClickHandler才会被执行。正确的 !。a
但这并不像它缩进的那样工作......
我认为它甚至不听点击,这是由于 function 完成的繁重工作a
。
i)您能否提供任何其他解释相同的示例,该示例可以证明事件队列函数在执行堆栈为空之前不会执行?
ii) 为什么这个例子不起作用!我在函数a执行时单击了窗口,而 documentClickHandler 在函数a完成工作时甚至没有显示它工作!