事件是异步还是同步?

Posted afu-1993

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事件是异步还是同步?相关的知识,希望对你有一定的参考价值。

初学前端的时候,资料上说事件是异步的。
根据 mdn 的描述也是异步的。

事件(Event)是指一种用于处理在网页的生命周期中发生的各种事件的异步调用的设计模式,也指一些不同种类事件的命名、描述和使用。

当时也不关心,会用就行。


后来,遇到了 htmlElement.click

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事件困扰我很久。

还是不清楚事件是异步还是同步。查了资料,也没明白。


我现在想的是,事件是一个过程:

  1. 行为触发 (异步)
  2. 事件处理 (同步)

这样就说的通了。

行为触发:什么时候用户点击、返回响应,这都是未知的也就是异步的。

事件处理:系统接收到事件触发,找到对应dom的回调函数、并执行的过程是同步的。

dom.click()直接触发,所以立即执行。

以上是关于事件是异步还是同步?的主要内容,如果未能解决你的问题,请参考以下文章

setState是同步的还是异步的

javascript中事件处理程序的异步或同步调用

react中的setState到底是同步还是异步?

react的setState函数同步还是异步?

[工作积累] UE4 并行渲染的同步 - Sync between FParallelCommandListSet & FRHICommandListImmediate calls(代码片段

[react] react中的setState是同步还是异步的呢?为什么state并不一定会同步更新?