<button id="btn">click</button>
<script>
var oBtn = document.getElementById('btn')
oBtn.addEventListener('click', function () {
Promise.resolve().then(() => console.log('微任务 1'))
console.log('listener1')
})
oBtn.addEventListener('click', function () {
Promise.resolve().then(() => console.log('微任务 2'))
console.log('listener2')
})
oBtn.click()
</script>
调用click方法的打印结果
listener1
listener2
微任务 1
微任务 2
点击按钮的打印结果
listener1
微任务 1
listener2
微任务 2
为什么会产生这种差异
dispatchEvent
,HTMLElement.click
,HTMLElement.focus
等)派发的事件的事件处理函数都是同步调用的;