初学前端的时候,资料上说事件是异步的。
根据 mdn 的描述也是异步的。前端
事件(Event)是指一种用于处理在网页的生命周期中发生的各类事件的异步调用的设计模式,也指一些不一样种类事件的命名、描述和使用。ajax
当时也不关心,会用就行。设计模式
后来,遇到了 HTMLElement.click
dom
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
我如今想的是,事件是一个过程:生命周期
这样就说的通了。事件
行为触发:何时用户点击、返回响应,这都是未知的也就是异步的。
事件处理:系统接收到事件触发,找到对应dom的回调函数、并执行的过程是同步的。
dom.click()直接触发,因此当即执行。