web前端防抖和节流

1.防抖:

  设置延迟器,每个一段时间执行一次,执行钱要清除定时器

防抖问题:用户不断在滚动时,防抖函数一直不执行

案例:也i按滚动每隔1秒钟执行函数

<style type="text/css">
            div{
                height: 300px;
            }
        </style>
    </head>
    <body>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        
        <script type="text/javascript">
            window.οnscrοll=debounce(showtop,1000)//连续不断地 动作
            function showtop(){
                //获取滚动条位置
                var scrollTop=document.body.scrollTop || document.documentElement.scrollTop;
                console.log(scrollTop,'kkk')
            }
            function debounce(fn,delay){//fn被执行函数,delay延时
                let timer=null
                return function(){
                    if(timer){//如果timer存在的话,久清除timer
                        clearTimeout(timer)
                    }
                    timer= setTimeout(showtop,1000)
                }
            }
        </script>

2.节流

<style type="text/css">
            div{
                height: 300px;
            }
        </style>
    </head>
    <body>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        <div>qqqqqqqqqqqqqqqq</div>
        
        <script type="text/javascript">
            window.οnscrοll=throttle(showtop,1000)//连续不断地 动作
            function showtop(){
                //获取滚动条位置
                var scrollTop=document.body.scrollTop || document.documentElement.scrollTop;
                console.log(scrollTop,'kkk')
            }
            function throttle(fn,delay){
                let vaild =true;//设置的开关
                return function(){
                    if(!vaild){//如果为false执行
                        return false
                    }
                    vaild=false;
                    setTimeout(()=>{
                        fn();//调用方法
                        vaild=true;//重新打开开关
                    },delay)
                }
            }
        </script>

应用场景:

回到顶部

input框输入搜索提示

页面大小发生变化 onresize

对鼠标实时定位

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值