js中防抖的实现

先介绍一下什么是抖动,当我们编写一个输入框,监听这个输入框时,每次输入一个内容都会触发这个函数,这个就是抖动。很多时候我们不想要这个抖动,就要想办法防抖,防止一个函数,短时间内多次被触发,希望抖动结束执行一次。以上就是防抖的介绍,下面通过实例来展示

没有防抖处理 的效果

 let ipt = document.querySelector("input");

        ipt.oninput = function () {
            console.log('input');
            box()
        }
        function box() {
            console.log('检查用户的输入');
        }

 加入防抖之后的效果

let ipt = document.querySelector("input");

        // 定义一个变量,flag 记录一个状态
        // 保存的 延时器的返回值
        let flag = null;
        ipt.oninput = function () {
            console.log('input');

            /*
                第一次 清空一个 null的延时器
                同时启动 一个延时器,返回值 存入flag

                如果1000内 又触发了input事件。
                清空上一次延时器,
                同时启动 一个新的延时器,返回值 存入flag

                直到 连续的抖动 结束 ,1000后就会执行box函数

            */
            clearTimeout(flag);
            flag = setTimeout(() => {
                box()
            }, 1000);
            
        }
        function box() {
            console.log('检查用户的输入');
        }

 通过防抖处理,连续多次短时间输入也只执行一次。主要应用场景:比如 登录,验证码, input中输入联想查询,浏览器窗口拖动变化等等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值