You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UI事件表中Sync/Async分类含义及两类事件差异咨询

UI事件的Sync/Async分类含义
  • 同步(Sync)事件:事件触发后会立刻在当前代码执行流程里同步派发、处理,会卡住后续代码,必须等事件处理函数跑完才会继续往下执行。简单说就是触发操作和事件处理在同一个“任务队列”里,按顺序来。
  • 异步(Async)事件:事件触发后不会马上处理,而是被放到专门的异步任务队列里,等当前所有同步代码都执行完、调用栈空了之后,才会被拿出来执行,不会耽误当前代码的运行。
Sync类型click事件与Async类型wheel事件的差异
  • 执行时机不同
    • click(同步):比如点击按钮,浏览器触发click事件后,会立刻执行绑定的处理函数,处理完才会走后面的同步代码。举个例子:
      const btn = document.querySelector('button');
      btn.addEventListener('click', () => {
        console.log('正在处理click事件');
      });
      console.log('这是后续的同步代码');
      // 输出顺序:正在处理click事件 → 这是后续的同步代码
      
    • wheel(异步):滚动滚轮触发wheel事件时,这个事件会先排队,等当前所有同步代码执行完才会处理。比如:
      window.addEventListener('wheel', () => {
        console.log('正在处理wheel事件');
      });
      console.log('这是后续的同步代码');
      // 输出顺序:这是后续的同步代码 → 正在处理wheel事件
      
  • 阻塞表现不同
    • click事件的处理函数如果有耗时操作(比如循环十万次),会直接卡住页面,后续代码、页面渲染都得等它做完,页面会明显卡顿。
    • wheel事件的处理函数就算有耗时操作,也不会卡住当前正在跑的同步代码,只会延迟自己的处理,不会立刻让页面变卡。
  • 触发与处理的关联逻辑不同
    • click事件的触发(用户点击)和处理是强绑定的同步流程,用户操作后能马上得到反馈(比如按钮点完立刻变灰),符合日常操作的直观预期。
    • wheel事件的触发(滚轮滚动)和处理是异步的,浏览器会把连续触发的滚轮事件合并处理,避免太频繁触发拖垮性能,所以快速滚动时,事件处理可能会有点延迟,但能保证页面运行流畅。

内容的提问来源于stack exchange,提问作者MaximPro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:22:11