javascript - 为什么即使主执行堆栈为空,事件队列中的函数也不会被调用?
问题描述
我正在阅读有关事件队列的文章。
并且作者说“事件队列中的函数在发现主执行堆栈为空之前不会执行”
为了证明这一点,他提供了以下示例
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完成工作时甚至没有显示它工作!
解决方案
推荐阅读
- arrays - TypeScript:用值或空输入数组/元组
- node.js - 在 sequelize 中搜索 where (column1 + column2 +column3) <= column4
- kotlin - 如何正确声明具有具体参数的挂起内联函数?
- kubernetes - Kubernetes Operator-sdk 1.2 没有本地运行选项
- python - 将值以分号分隔的数据帧系列转换为“1 对 1”数据帧
- r - 用不同的变量替换重复项
- c - 如何在汇编中减去两个数字(确切地说是字符)?
- java - 索引返回错误值,即 1 而不是 0
- java - Dropwizard 拦截器响应状态
- javascript - 在javascript中的switch case中传递url参数