美文网首页
使用requestAnimationFrame替换setInte

使用requestAnimationFrame替换setInte

作者: 一个小前端程序员 | 来源:发表于2020-06-12 10:49 被阅读0次
//开启计时器,和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)
}

相关文章

网友评论

      本文标题:使用requestAnimationFrame替换setInte

      本文链接:https://www.haomeiwen.com/subject/pwkgtktx.html