window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function (func) {
setTimeout(func, 1000 / 40);
}
requestAnimationFrame的使用
(function animloop(time) {
console.log(time,Date.now())
render();
rafId = requestAnimationFrame(animloop);
//如果left等于50 停止动画
if(left == 50){
cancelAnimationFrame(rafId)
}
})();
//requestAnimationFrame()返回一个 long 整数,请求 ID ,是回调列表中唯一的标识,是个非零值,没别的意义。你可以传这个值给 window.cancelAnimationFrame() 以取消回调函数。
window.cancelAnimationFrame();//取消调用执行
通过观察可以看出来,我们上面的这段代码的目的是为了让我们可以,实现定时渲染
总结:
浏览器其实一直在刷新,当给window.requestAnimationFrame传入一个回调函数的时候,那么就是告诉浏览器在渲染前执行一下这个回调函数。