问题描述
var vendors = ['webkit','moz'];
for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
}
我从https://coderwall.com/p/iygcpa/gameloop-the-correct-way
复制了这个这是js代码 所以 window.requestAnimationFrame 是在页面下一次重绘之前调用函数的方法 但在这里从一个真实的例子中,他没有将它用作他分配给它的功能 有人可以向我解释为什么要这样做吗?
我明白什么是 window.requestAnimationFrame() 但我不明白我引用的代码,比如为什么使用这段代码,它的真正用途是什么?
解决方法
曾几何时,所有浏览器都不支持此方法。在他们就应该如何进行以及应该如何明确说明达成一致之前,每个供应商都制作了自己的版本,该版本大致相同。然而,知道这可能不会完全像未来的最终版本一样,他们决定只以一个隐藏的名字公开它,使用他们自己的“供应商前缀”作为让开发人员在它稳定之前玩这个实验性功能的手段.
您找到的代码确实将它们全部包装在相同的现在正式名称 requestAnimationFrame
和 cancelAnimationFrame
下,因此调用此唯一方法将调用现在正式版本或实验性供应商前缀一个如果不可用。
在现代浏览器中你不需要这个,在旧浏览器中你可能想用 setTimeout 来填充它。