我知道我可以手动取消requestAnimationFrame
回调
function step(timestamp) {
if (!start) start = timestamp;
var progress = timestamp - start;
element.style.left = Math.min(progress / 10, 200) + 'px';
if (progress < 2000) {
window.requestAnimationFrame(step);
}
}
const raf = window.requestAnimationFrame(step);
window.cancelAnimationFrame(raf)
上一个主要是MDN文档中的示例代码。
我的问题是这样的:
除了要早取消
requestAnimationFrame
之外,是否还需要明确取消它?特别
if (progress < 2000) {
window.requestAnimationFrame(step);
}
一旦进度小于2000,就会停止递归调用自己。
这是否意味着它已从事件循环中清除?
最佳答案
不,没有必要
由于requestAnimationFrame
仅运行一次,因此您应在检查退出条件后递归调用它(与示例中的完全一样)
当外部事件可以停止动画时,cancelAnimationFrame
很有用
关于javascript - 是否总是需要取消动画帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51033938/