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,这将停止递归调用自身。
这是否意味着它已从事件循环中清除?
解决方案
不,没有必要
因为requestAnimationFrame
只运行一次,所以您应该在检查退出条件后递归调用它(就像在您的示例中一样)
cancelAnimationFrame
当动画可以被外部事件停止时很有用
推荐阅读
- sql - 按列分组并选择其他列作为rails中的列表
- amazon-dynamodb - 使用 Appsync 和 DynamoDB 按 id 获取项目的有效方法
- arrays - 如何将与字符串分离的元素添加到另一个数组?
- image - Cordova 插件 cordova-plugin-wkwebview-engine 无法显示图像
- python - 使用 add_url_rule 方法的烧瓶路由
- javascript - 导出默认值有效,但在 React 中无法导出任何其他内容
- node.js - 如何执行并获得 NodeJS 承诺的结果?
- node.js - 如何将图像上传到 Firebase?可能吗?
- python - 运行 dockerised Hello world python 示例时执行格式错误
- azure - Azure 自定义 DNS 服务器未刷新