首页 > 其他分享 >节流&防抖

节流&防抖

时间:2023-02-17 11:58:35浏览次数:27  
标签:function 触发 防抖 节流 timer 函数

函数防抖(debounce)

在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。

function debounce(fn, delay) {
  let timer = null;

  return function() {
    if (timer) clearTimeout(timer);

    timer = setTimeout(() => {
      fn.apply(this, arguments);
    }, delay);
  };
}

函数节流(throttle)

规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。

drag(拖动)事件或者 scroll(滚动) 期间触发某个毁掉,要设置一个时间间隔。这时候就不能使用防抖了,为什么呢?
防抖是拖拽或者滚动结束之后才返回回调,但是我是需要在过程中进行触发回调,但是又不需要那么的频繁;这时候就使用节流函数,每隔一定的时间进项触发就好了!

function throttle(fn, delay) {
  let timer = null;

  return function() {
    if (!timer) {
      timer = setTimeout(() => {
        fn.apply(this, arguments);

        timer = null; // 执行完成后,重置为 null,以便下次触发事件时,再次执行函数。
      }, delay);
    }
  };
}

总结

  • 函数防抖和函数节流都是防止某一时间频繁触发,但是它们之间的原理却不一样。
  • 函数防抖是某一段时间内只执行一次,而函数节流是间隔时间执行。

结合应用场景

  • debounce防抖
    • 一个搜索输入框,用户不停的进行输入(这个时候就是抖动的过程),等用户输入停止之后,再触发搜索。
    • window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次。
  • throttle节流
    • 鼠标不断点击触发,mousedown(单位时间内只触发一次)。
    • 监听滚动事件,比如是否滑到底部自动加载更多,用throttle来判断。

标签:function,触发,防抖,节流,timer,函数
From: https://www.cnblogs.com/strongerPian/p/17129621.html

相关文章

  • 还在用 JS 做节流吗?CSS 也可以防止按钮重复点击
    本文正在参加「金石计划.瓜分6万现金大奖」。欢迎关注我的公众号:前端侦探众所周知,函数节流(throttle)是JS中一个非常常见的优化手段,可以有效的避免函数过于频繁的执......
  • js-防抖(简易版)
    /** *节流函数 */varcount=1;varcontainer=document.getElementById('container');functiongetUserAction(e){  //console.log(this)  //c......
  • js 防抖
    //防抖作用:防止重复触发事件varcount=1;varcontainer=document.getElementById('container');functiongetUserAction(e){  //console.log(this)  ......
  • 前端学习案例1-防抖和节流1
    ......
  • java防止频繁请求、重复提交(防抖动)
    在客户端网络慢或者服务器响应慢时,用户有时是会频繁刷新页面或重复提交表单的,这样是会给服务器造成不小的负担的,同时在添加数据时有可能造成不必要的麻烦。自定义注解/......
  • css节流
    众所周知,函数节流(throttle)是JS中一个非常常见的优化手段,可以有效避免函数过于频繁的执行。 举个例子:一个保存按钮,为了避免重复提交或者服务器考虑,往往需要对点击行为......
  • vue 防抖节流器
    节流器:在一定时间内频繁的触发函数只会执行一次应用场景:我这里有一个图表需要在窗口改变大小的时候重绘图表的大小,但是窗口改变大小的事件过于频繁,需要增加一个节流器来进......
  • 详解防抖和节流函数
    本文转自:https://www.jianshu.com/p/f9f6b637fd6c闭包的典型应用就是函数防抖和节流,本文详细介绍函数防抖和节流的应用场景和实现。函数防抖(debounce)函数防抖,就是指触发......
  • 疫情大环境下科技互联网公司开源节流降本增效
    三年疫情改变了人们的生活,也改变了行业的趋势。三年大疫,让一路疾驰的科技互联网急踩刹车,减速换挡,很多企业从高歌猛进到黯然失色,甚至是伤感落幕。活着的公司也都纷纷砍一刀......
  • js防抖函数
    1、使用场景:例如:搜索框搜索输入。只需用户最后一次输入完,再发送请求2、函数防抖的要点:需要一个 setTimeout 来辅助实现,延迟运行需要执行的代码。如果该方法多......