【问题标题】:Handling events like clicks while using requestAnimationFrame loop在使用 requestAnimationFrame 循环时处理点击等事件
【发布时间】:2023-03-11 02:55:01
【问题描述】:

我在一个项目中使用requestAnimationFrame,我需要根据用户输入触发某些音频和视频事件。当我收到输入时,我缓存了在requestAnimationFrame 的下一次传递期间要呈现的信息,并继续进行处理以立即呈现音频事件。

我的问题是:音频输出信息的处理会延迟视觉渲染并导致卡顿吗?例如,如果...

  • 鼠标点击发生在时间戳 15 毫秒;
  • requestAnimationFrame 的下一次传递计划发生在 16ms(所以点击后 1ms);和
  • 处理鼠标点击进行音频渲染需要 5 毫秒;

会处理鼠标点击进行音频渲染,会在时间戳20ms完成,延迟requestAnimationFrame的执行5ms?还是requestAnimationFrame 在不受事件循环影响的单独线程上运行?

谢谢!

【问题讨论】:

    标签: javascript canvas web-audio-api requestanimationframe


    【解决方案1】:

    不,requestAnimationFrame(rAF) 在其他线程上不起作用,所以是的,如果您在事件循环中有一个很长的任务,它将延迟事件循环中发生的所有其他事情,包括 rAF。不过不用担心,你的 rAF 回调也会需要一些时间来执行,如果你的点击处理程序真的只需要 1ms,它不会被注意到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多