防抖节流

防抖节流

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box,.box1{
            width: 1000px;
            height: 200px;
            background-color: blueviolet;
            margin-top: 20px;
        }
    </style>
</head>
<body>
    <div class="box"></div>
    <div class="box1"></div>
</body>

// 防抖 触发一次后连续触发无效,触发后隔一段时间才能再触发 典型的案例就是鼠标不断点击触发,规定在n秒内多次点击只有一次生效

 var box = document.querySelector('.box')
    var testDebounce = debounce(move,500)

    box.onmousemove = testDebounce

    function move(ev){
        this.innerHTML = ev.clientX
    }

    function debounce(fn,wait){
        let timmer = null;
        return function(){
            var args = arguments
            var now = !timmer
            if(now){
                fn.apply(this,args)
            }
            timmer && clearInterval(timmer)//clearInterval停止执行
            timmer = setTimeout(() =>{
                timmer = null;
            },wait);       
        }
    }

//节流。频繁触发,再规定时间间隔执行 典型的案例就是输入搜索:输入结束后n秒才进行搜索请求,n秒内又输入的内容,就重新计时

var box1 = document.querySelector('.box1')
var testJl = jl(move,2000)
box1.onmousemove = testJl
function move(ev){
    this.innerHTML = ev.clientX
}
function jl(fn,wait){
    let timmer = null;
    return function(){
        var args = arguments
        if(!timmer){
            timmer = setTimeout(() =>{
                timmer = null   
                fn.apply(this,args)
            },wait); 
        }     
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值