//开启计时器,和setInterval类似
var test1 = setAnimationFrame(function(){
console.log("-----------")
},1000);
//清除计时器
clearAnimationFrame(test1)
//使用requestAnimationFrame重写setInterval,进行性能优化
function setAnimationFrame(render,time) {
//当前执行时间
var nowTime = 0;
//记录每次动画执行结束的时间
var lastTime = Date.now();
//我们自己定义的动画时间差值
var diffTime = time;
//当前requestAnimationFrame的id
//此处使用对象,对象存储在地址空间,函数内部更新了对象的值,函数外部也可以接收到
var timer = {};
function animloop() {
//记录当前时间
nowTime = Date.now();
if (nowTime - lastTime > diffTime) {
lastTime = nowTime
render();
}
//timerid为数字
timer.id = requestAnimationFrame(animloop);
}
animloop()
return timer;
}
function clearAnimationFrame(test){
cancelAnimationFrame(test.id)
}
网友评论