函数节流和函数防抖

  • 函数节流: 指定时间间隔内只会执行一次任务
  • 函数防抖: 任务频繁触发的情况下,只有任务触发的间隔超过指定间隔的时候,任务才会执行

例如:输入框输入文字如下:1111111111111111111111...

  • 函数节流:当用户持续输入1的过程中,从你开始输入1开始计时,到第1s,执行函数
  • 函数防抖:当用户持续输入1的过程中,并不会执行函数,当用户停止输入1s后,执行函数

以下是实现的代码,我忘了引用谁的了……

函数节流
<input>
<script>
  let text = document.querySelector("input")
  function throttle(fn, interval = 1000) {
    let canRun = true;
    return function () {
        if (!canRun) return;
        canRun = false;
        setTimeout(() => {fn();canRun = true;}, interval);
    };
  }
  text.oninput = throttle(()=>{console.log(text.value)})
</script>
函数防抖
<input>
<script>
  let text = document.querySelector("input")
  function debounce(fn, interval = 1000) {
    let timeout = null;
    return function () {
        clearTimeout(timeout);
        timeout = setTimeout(() => {fn()}, interval);
    };
  }
  text.oninput = debounce(()=>{console.log(text.value)})
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容