假如 div 里面有一个 button, 它们两个都绑定了 click 事件,当我们点击里面的 button 的时候,默认情况下事件会冒泡到 div,由于这种 dom 事件是宏任务,所以如果 button 的 click 回调里面有微任务就绪的话,会先执行这个微任务(队列),然后再继续冒泡。
<div onclick="divclick()">
div
<button onclick="btnclick()">button</button>
</div>
<script>
function btnclick() {
console.log('btn click')
Promise.resolve().then(() => {
console.log('micro task')
})
}
function divclick() {
console.log('div click')
}
</script>
以上示例会依次打印:btn click > micro task > div click。
网友评论