原生js_节流函数

节流函数的作用:
函数节流是为了解决有时候连续触发某个事件或者连续滚动而频繁的操作DOM以至于浏览器可能奔溃的问题

节流函数思路:
限制一个函数,在一定时间内,只能执行一次

	let oBtn=document.getElementById('show');
    let oBox=document.getElementById('box');
    /*
        handle:buy函数
        wait:在规定在时间内只能执行一次 
    */
    //第一次执行函数的时候,给lastTime赋值为0,确保是第一次执行
    let lastTime = 0;
    function throttle (handle, wait) {
        console.log(lastTime)
        return function (e) {
            //给你newTime赋值当前时间
            let nowTime = new Date().getTime()
            //输出当前时间
            console.log("newTime是" + nowTime)
            //判断 用刚才给newTime赋值的时间 - 函数开始时给lastTime赋值的0
            //判断为true 进入里面
            //为false的时候 不进入
            if (nowTime - lastTime > wait) {
                // console.log(nowTime)//当前时间
                // console.log(lastTime)//函数第一次执行的时候,lastTime为0,之后每一次执行的时候,lastTime是上一次执行的时间
                // console.log(wait)//wait 为间隔多少时间才能执行下一次
                //如果进入了函数,执行bug函数
                handle(); 
                //给lastTime赋值为nowTime的值
                lastTime = nowTime;
            }
            // console.log(e)
        }
    }
    function buy(){
        //给上面的div 赋值,函数每执行一次,+1
        oBox.innerText = parseInt(oBox.innerText)+1
        //打印上面div的值
        console.log(oBox.innerText)
    }
    
    //点击按钮button,执行函数
    oBtn.onclick = throttle(buy, 1000)

使用场景
懒加载、滚动加载、加载更多或监听滚动条位置;
百度搜索框,搜索联想功能;
防止高频点击提交,防止表单重复提交;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值