是否总是需要取消动画帧

时间:2018-06-26 02:06:32

标签: javascript

我知道我可以手动取消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,此操作将停止递归调用自己。

这是否意味着它已从事件循环中清除?

1 个答案:

答案 0 :(得分:2)

不需要,

由于requestAnimationFrame仅运行一次,因此您应在检查退出条件后递归调用它(与您的示例完全相同)

cancelAnimationFrame在动画可以被外部事件停止时很有用