最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 逐步理解js防抖

    正文概述 掘金(山河木马)   2020-12-15   491

    需求

    • 1.正常点击加减按钮,显示速度提示弹窗,2秒后隐藏弹窗
    • 2.连续点击加减按钮(间隔时间短),显示速度提示弹窗,操作停止后,2秒后隐藏弹窗

    逐步理解js防抖

    解决思路

    • 1.速度改变时,执行显示弹窗,定义setTimeOut定时器,2秒后执行隐藏弹窗
    • 2.正常情况,用户只点击一次,以上代码正常,如果用户点击频繁,代码1会多次执行, 这时需要clearTimeout清空定时器
    • 3.clearTimeout清空定时器,原本定时器在2秒后执行,这时清空就会取消原本定义的2秒后执行,只会执行最后一次的执行
      let speedChangeTimer;
      cameraWalkOperator.bindChangeSpeedCallback(() => {
        console.log("速度改变");
        this.setState({
          tipSpeed: true,
        });
        clearTimeout(speedChangeTimer);
        speedChangeTimer = setTimeout(() => {
          this.setState({
            tipSpeed: false,
          });
        }, 2000);
    
        let speed = cameraWalkOperator.getSpeed();
        this.setState({
          speedValue: speed,
        });
      });
    

    防抖

    // 这其实是个闭包函数
    function debounce(func, wait) {
      let timer;
      return function () {
        clearTimeout(timer);
        timer = setTimeout(function () {
          func();
        }, wait)
      }
    }
    

    网上版本

    function debounce(method,delay) {
      var timer=null;
      return function () {
        var context = this, args = arguments;
        clearTimeout(timer);
        timer = setTimeout(function () {
          method.apply(context,args);
        },delay);
      }
    }
    

    注意

    • 查看代码可知返回的是一个函数,没有执行
    • 使用时一般绑定在监听上document.addEventListener('mousemove', debounce)
    • 如果我们只是普通的使用,没有用dom的这种绑定事件监听,那么得加 () 自运行
    • 如下图所示,这个防抖其实是无效的,因为每次执行函数时,debounce都重新执行了一遍,已经不是同一个了,是不同的。

    逐步理解js防抖

    想理解addEventListener绑定事件原理。请看我的这篇文章

    定义

    定义: 策略是当事件被触发时,设定一个周期延迟执行动作,若期间又被触发,则重新设定周期,直到周期结束,执行动作。


    起源地下载网 » 逐步理解js防抖

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元