将 DOM 操作延迟到浏览器空闲的惯用/常见/适当的方法是什么?

What's the idiomatic / common / adequate way of delaying a DOM manipulation until the browser is idle?

提问人:Igor Bykov 提问时间:10/24/2023 最后编辑:Igor Bykov 更新时间:10/24/2023 访问量:58

问:

比如说,我想在文档中插入几个 s,但这些 s 的优先级非常低,因此,我希望这些插入在浏览器空闲时执行。<script><script>

window.requestIdleCallback 似乎是做到这一点的适当方法,但我们不应该对里面的 DOM 进行更新。window.requestIdleCallback

将操作传递给 window.requestAnimationFrame 似乎还不够,因为它只会在下一帧执行,而不是在浏览器空闲时执行。

我应该像这样把里面包裹起来吗?window.requestAnimationFramewindow.requestIdleCallback

window.requestIdleCallback(() => {
  window.requestAnimationFrame(() => {
    /* Insert scripts */
  });
});

有没有更好/更合适的方法?

这个问题并不真正局限于插入 s 的特定情况,而是针对任何想要在浏览器空闲时延迟任何 DOM 操作的情况(这听起来像是一个非常常见的用例)。<script>

JavaScript 性能 DOM 浏览器

评论

1赞 icecub 10/24/2023
官方文档在这里谈到了这种特定情况:developer.mozilla.org/en-US/docs/Web/API/......
0赞 mplungjan 10/24/2023
很好找到。所以排队是一个不错的选择......
0赞 Igor Bykov 10/24/2023
@icecub 在问之前,我先看了这篇文章。似乎提出的解决方案是一个更详细和不太清晰的调用版本。我在这个例子中遇到的问题是,它非常啰嗦,似乎比它需要的要细致得多,并展示了一个很好的程序示例,该程序与常见的日常Web开发用例没有可识别的相似之处。window.requestAnimationFramewindow.requestIdleCallback

答: 暂无答案