防抖动与节流

作者: aichisuan | 来源:发表于2019-03-13 18:51 被阅读5次

自古人生一世,需有一技之长,
我辈既务斯业,便当专心用功,
以后名扬四海,根据全在年轻。——霸王别姬

combat.jpg
  • 好友给我发了一张图,某些时候会发现自己不足,感觉什么都知道,但其实一直没有去归纳总结。最近会多写一些容易忘记的技术点。

概念

  • 防抖:任务频繁触发的情况下,只有任务触发的间隔超过指定间隔的时候,任务才会执行。
  • 节流:指定时间间隔内只会执行一次任务。
html代码
<body>
  <button id="test">测试防抖和节流</button>
</body>
防抖动
<script>
  window.onload = function () {
    var btn = document.getElementById('test');
    btn.addEventListener('click', antiShake(printF))
  }

  function antiShake(fn) {
    var timeout = null;
    return function () {
      clearTimeout(timeout);
      timeout = setTimeout(function () {
        fn.apply(this, Array.from(arguments));
      }, 1000)
    }
  }

  function printF() {
    console.log('防抖动了吗?')
  }
</script>
节流
  window.onload = function () {
    var btn = document.getElementById('test');
    btn.addEventListener('click', throttle(printF))
  }

  function throttle(fn) {
    var flag = true;
    return function () {
      if(!flag){
        return;
      }
      flag = false
      setTimeout(function() {
        // fn();
        fn.apply(this, Array.from(arguments));
        flag = true;
      }, 1000)
    }
  }

  function printF() {
    console.log('节流了吗?')
  }
使用场景
  • 防抖动
  1. 输入框搜索产生联想词。
  • 节流
  1. 懒加载要监听计算滚动条的位置,使用节流按一定时间的频率获取。
  2. 用户点击提交按钮,假设我们知道接口大致的返回时间的情况下,我们使用节流,只允许一定时间内点击一次。
  3. 比如在页面的无限加载场景下,我们需要用户在滚动页面时,每隔一段时间发一次 Ajax 请求,而不是在用户停下滚动页面操作时才去请求数据。这样的场景,就适合用节流技术来实现。

相关文章

  • 图解防抖动与节流模式

    防抖动 防抖动立即触发 防抖动 节流 节流立即触发 节流 总结 防抖动:将多个操作合并为一个操作(例如,键盘输入关...

  • 防抖动与节流

    自古人生一世,需有一技之长,我辈既务斯业,便当专心用功,以后名扬四海,根据全在年轻。——霸王别姬 好友给我发了一张...

  • ts防抖节流

    防抖动和节流本质是不一样的。防抖动是将多次执行变为最后一次执行,节流是将多次执行变成每隔一段时间执行。 使用

  • 防抖和节流

    区别:防抖动和节流本质是不一样的。防抖动是将多次执行变为最后一次执行,节流是将多次执行变成每隔一段时间执行 出现场...

  • 防抖动与节流阀

    这两个名次早前听小伙伴们说起过,大概了解他们是性能优化的方式,但是没有在项目里用过,最近联想到项目里的一些场景,觉...

  • 前端节流(throttle)和防抖动(debounce)

    上一期是 JS 高阶函数的入门,这一期再来谈谈高阶函数在前端最常见的两个应用——节流和防抖动 节流(throttl...

  • JavaScript 中的函数防抖动与节流

    摘要:JavaScript 中的函数防抖和节流是很常用的需求,前端面试也是频率比较高被问到的知识,本文就通过二者的...

  • 防抖和节流

    你是否在日常开发中遇到一个问题,实现一个按钮的防二次点击操作,否则用户频繁点击很有可能导致页面卡顿。 防抖动和节流...

  • 1、实现防抖函数(debounce)

    一:介绍 防抖函数原理:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时 防抖动和节流本质是不一样...

  • RxJava<第二十五篇>:功能防抖(防暴力点击)

    网上有大量的防抖动措施,基本类似。 下面我来通过RxJava实现防抖动(防暴力点击) RxBinding和thro...

网友评论

    本文标题:防抖动与节流

    本文链接:https://www.haomeiwen.com/subject/fpitmqtx.html