• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

js 防抖和节流应用场景和

武飞扬头像
老胡说前端
帮助1

区别:防抖是持续发生事件,但有效执行内容在规定的时间。

        节流:控制在2-3秒发生一次事件。

1 防抖

场景:比如 登录,验证码, input中输入联想查询,浏览器窗口拖动变化等等

实例:

<input type="text" id="fd" value="防抖" />

<input type="submit" id="btn" value="提交" />

var fd = document.querySelectore("#fd");

var btn = document.querySelector("#btn");

btn.addEventListener('click',antiShake(getFun,2000));

function getFun(e){

  var val = fd.value;

  console.log(val);//

  console.log(this) //通过fn.apply(arguments) this指向,指向了btn点击的指向

}

//防抖

function antiShake(fn,time){

  var t = null;//定时器

  // var that = this;

  return function(e){

    var that = this;

    if(t){//判断定时器是否生成,生成了就清除上一次定时器。

      clearTimeout(t)

    }

    //如果是第一次点击就立即执行

    var firstClick = !t;

    if(firstClick){

      //fn();

      fn.apply(that,arguments) //改变指向

    }

    //两秒内点击不会再次执行fn函数。

    t = setTimeout(function(){

      t = null;

    },time)

  }

}

2 节流

     节流:控制在2-3秒发生一次事件。

应用场景:滚动事件,每个2-3秒触发一次

         实时搜索框:每隔2-3秒搜索一次

var fd = document.querySelectore("#fd");

var btn = document.querySelector("#btn");

btn.addEventListener('click',throttle(getFun,2000));

function getFun(e){

  var val = fd.value;

  console.log(val);//

}

function throttle(fn,time){

  var beginTime = 0;//初始值

  return function(){

    //拿到当前的时间戳

    var date = new Date().getTime();

    var that = this;

    if(data-beginTime > time){//大于设定时间-- 就可以执行了

      fn.apply(that,argument)

      beginTime = date;

    }

  }

}

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhghchkb
系列文章
更多 icon
同类精品
更多 icon
继续加载