返回首页 设计案例 文章动态 组件列表
联系我们

扫一扫微信二维码

节流方法实现


函数节流:主要作用性能优化

核心就是:让一个函数不要执行得太频繁,减少一些过快的调用来节流。


    /**
    * 节流方法 1
    * 缺点 最后一次不执行
    */
    function throttle(cb,duration){
        let currTime = 0;
        return function(){
            let nowTime = Date.now();
            if(nowTime - currTime > duration){
                currTime = nowTime;
                cb.apply(this,arguments);
            }
        }
    }
    
    /**
    * 节流方法 2
    * 缺点 第一次不执行 并且最后一次可能用户退出当前页之后执行,有延长时间
    */
    
    function throttle(cb,duration){
        let timer = null;
        return function() {
            if(!timer){
                timer = setTimeout(() => {
                    timer = null;
                    cb.apply(this,arguments);
                },duration);
            }
        }
    }
    
    /**
    * 节流方法 3
    * 缺点 第一次不执行 并且最后一次可能用户退出当前页之后执行,有延长时间
    */
    
    function throttle(cb,duration){
        let startTime = Date.now();
        let timer = null;
        return function(){
            let nowTime = Date.now();
            let remainning = duration - (nowTime - startTime);
            clearTimeout(timer);
            if(remainning <= 0){
                startTime = Date.now();
                cb.apply(this,arguments);
            }else{
                timer = setTimeout(() => {
                    cb.apply(this,arguments);
                },remainning)
            }
        }
    }
    
    window.addEventListener('scroll', throttle(function(e){
        console.log(e)
    }, 300))


建站咨询

点我咨询

建站咨询热线

153-2135-3313

QQ,新浪是独立账号信息不互通

Q Q 登陆

我已阅读并接受 《注册声明》与《版权声明》

没有账号?立即注册

QQ,新浪是独立账号信息不互通

Q Q 注册

我已阅读并接受 《注册声明》与《版权声明》

已有账号?

注册声明

一、用户注册、登陆,视为接受本协议的约束。

二、用户承诺遵守国家的法律法规及部门规章

三、用户承诺遵守“313组件库”的知识产权政策.

四、站内插件用于行业交流、学习。

五、用户侵犯第三人的知识产权,由该用户承担全部法律责任。

版权声明

313组件库(www.yu313.cn)站内所有涉及插件及代码由会员或站主上传而来,313组件库不拥有会员上传的插件及代码的版权

313组件库作为网络服务提供者,对非法转载,盗版行为的发生不具备充分的监控能力。但是当版权拥有者提出侵权指控并出示充分的版权证明材料时,313组件库负有移除盗版和非法转载作品以及停止继续传播的义务。313组件库在满足前款条件下采取移除等相应措施后不为此向原发布人承担违约责任或其他法律责任,包括不承担因侵权指控不成立而给原发布人带来损害的赔偿责任。

如果版权拥有者发现自己作品被侵权,请及时向313组件库提出权利通知,并将姓名、电话、身份证明、权属证明、具体链接(URL)及详细侵权情况描述发往版权举报专用通道,313组件库在收到相关举报文件后,在3个工作日内移除相关涉嫌侵权的内容

QQ:515184405(周一到周五,9:30-18:00)

首页 案例 组件 我的