美文网首页
使用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