requestAnimationFrame()和竞争条件

时间:2019-05-30 17:38:15

标签: javascript google-chrome single-page-application requestanimationframe reflow

当进行大规模DOM操作时,

requestAnimationFrame的实用性似乎越来越少。

我有一个SPA应用程序,该应用程序在站点导航过程中取消HTML内容,这导致正文中的主要元素被另一个主要元素替换。替换后,必须运行各种例程来编辑HTML,添加事件侦听器等。

Chrome浏览器抱怨强迫回流困扰该过程。我已经广泛阅读了有关rAF的文献,了解了将测量值与突变等分离的技术,并尝试将其与嵌套rAF结合使用。

中心问题是,封装在rAF中的例程的结果可能在rAF之外的后续代码块中是必需的,并且不可能以俄罗斯娃娃的方式将每个后续过程嵌套在内部rAF中。 / p>

如果在导致DOM测量或变异的那些操作上,我们可以将操作及其之后的所有操作转移到下一个动画帧的开始,那将更有帮助。为此,我真的没有其他解决方案。 (如果后续操作无法转移,那么它们可能在完成rAF封装的操作之前运行,因此后续操作所需的值不可用。)

(我尝试在rAF内的操作结束时触发一个自定义事件,并在检测到该事件时让随后的代码开始,但这只是通过更多步骤重新创建了俄罗斯娃娃问题... )

有人知道解决该问题的技术吗,或者它是失败的原因?

(我该如何标记Paul Irish或Chrome小组的其他成员对此发表评论?)

0 个答案:

没有答案