无休止的动画、requestAnimationFrame 和调用堆栈限制

2024-01-11

我正在开发一个小项目,该项目使用 Twitter 流 API 并从中制作一些画布动画。鉴于 Twitter 流 API 没有结束,动画可能会无限期地继续下去。

问题就在于此。requestAnimationFrame似乎是通过递归进行操作的,直到 ES6 之前我们都没有得到正确的尾部调用,这意味着我认为这会增加每一帧的调用堆栈。

问题是,我是否正确,这最终会引发超出最大调用堆栈大小的错误,或者浏览器是否会采取一些技巧来避免限制?是requestAnimationFrame真的做了一些我不明白的奇怪的事情(也许沿着setInterval不是递归的)?

在 chrome 36.0.1985.32 beta(调用堆栈大小为 20834)中,我正在测试:

function test(t) {
    requestAnimationFrame(test);
}

test(performance.now());

并且没有看到任何问题。我希望有一个RangeError假设 60 fps,大约需要 6 分钟。

另一个误导性信息显示在 Chrome 开发人员工具窗口的“调用堆栈”部分中,其中显示了requestAnimationFrame调用堆栈,因为它会填满堆栈,如下图所示:


英国皇家空军将在“下一帧”启动该功能。这意味着它将在另一个操作堆栈中执行,并且不会出现任何最大调用堆栈错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无休止的动画、requestAnimationFrame 和调用堆栈限制 的相关文章

随机推荐