找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1194|回复: 0
打印 上一主题 下一主题
收起左侧

前端防抖和节流js实现

[复制链接]
跳转到指定楼层
楼主
ID:949156 发表于 2021-7-7 19:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
防抖和节流:均是减少某一函数频繁执行消耗内存和资源的情况(减少执行次数)。

    防抖:规定在多久时间内没有动作触发函数才执行该函数。


    场景举例:用户滚轮滑动显示距离页顶的高度。
      //显示页顶高度
      function showTop(){
        console.log(document.body.scrollTop||document.documentElement.scrollTop)
        time = null;
      }
      //防抖函数
      function rejectShook(){
        var time = null;
        return function(){
          if(time==null){
          //新建计时器,到时console
              time = setTimeout(showTop,200)
          }else{
          //没到时间删除老计时器,新建另一计时器.
               clearTimeout(timer);
               time =setTimeout(showTop,200)
          }
        }
      }
    window.onscroll =rejectShook(showTop);

  2.节流:类型于技能冷却,触发后一定时间不再触发
     function showTop(){
        console.log(document.body.scrollTop||document.documentElement.scrollTop;);
     }
     window.onscroll =lessRender();
     function lessRender(){
       //定义一个冷却,初始未冷却:false
       var lique =false;
       return function(){
        //查询当前状态
           if(lique){
             return;~~~~
           }else{
             show();
             lique = true;
             //重新进入冷却,2s后可以再触发
             setTimeout(()=>{lique=false},2000)
         }
       }
     }


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表