JS解释器中的事件循环
这是在angular开发中遇到的一个问题!DOM树没加载完成,就进行了js的操作,然后报错
<button onclick="执行一件耗时的操作1">按钮1</button>
<button onclick="console.log(2)">按钮2</button>
如果用户点击了按钮1,JS解释器是单线程的,执行按钮1 监听函数时即使用户点击了多次按钮2,也不会执行按钮2的监听函数——而是把这些监听函数进行排队——在事件循环队列中。
所有的DOM元素事件监听函数/定时器监听函数都会添加到“事件循环队列”中,等JS解释器有空了,就会依次执行。
setTimeout(function(){
console.log(999);
}, 0),//本质是0到后,把回调函数追加到事件循环队列尾部
避免js代码在DOM树未加载完成执行