事件是異步仍是同步?

初學前端的時候,資料上說事件是異步的。
根據 mdn 的描述也是異步的。前端

事件(Event)是指一種用於處理在網頁的生命週期中發生的各類事件的異步調用的設計模式,也指一些不一樣種類事件的命名、描述和使用。ajax

當時也不關心,會用就行。設計模式


後來,遇到了 HTMLElement.clickdom

var dom = document.querySelector('xxx')
dom.addEventListener('click',function(){ console.log(' dom is clicked ') })

function test (){
    dom.click()
    console.log(' after dom.click() ')
}
test() // 'dom is clicked'  ' after dom.click() '

手動觸發事件,事件觸發到函數執行並非異步的。異步

因此當時認爲事件是同步的。函數


有ajax這樣的 xhr的readyStateChange事件困擾我好久。設計

仍是不清楚事件是異步仍是同步。查了資料,也沒明白。code


我如今想的是,事件是一個過程:生命週期

  1. 行爲觸發 (異步)
  2. 事件處理 (同步)

這樣就說的通了。事件

行爲觸發:何時用戶點擊、返回響應,這都是未知的也就是異步的。

事件處理:系統接收到事件觸發,找到對應dom的回調函數、並執行的過程是同步的。

dom.click()直接觸發,因此當即執行。

相關文章
相關標籤/搜索