Vue 防抖与节流

参考博客
arguments

防抖

高频请求只有最后一次处理
实现原理:每次响应时清空定时期,延时时间要高于高频请求的间隔

function debounce(fn, delay = 500) {
  let timer = null
  return function() {
    let args = arguments
    if (timer) clearTimeout(timer)
    timer = setTimeout(() => {
      fn.apply(this, args);
    }, delay)
  }
}

核心就是调用时需要注意,利用的是闭包,method需要赋予执行后的返回值

antiShake: debounce(function() {
  console.log('前辈会被清除吗?2')
}, 1000),
antiShake2: debounce(function() {
  console.log('兄弟会被清除吗?1')
}),
// 请勿使用箭头函数,它没有this

可在created中测试

this.antiShake()
this.antiShake()
this.antiShake()
this.antiShake2()
this.antiShake2()
this.antiShake2()
// 兄弟会被清除吗?1
// 前辈会被清除吗?2

节流

每处理一次请求,会有一段时间的静默

export function throttle(fn, interval = 500) {
  var last;
  return function () {
    var args = arguments;
    var now = +new Date();
    if (!last || now - last > interval) {
      last = now;
      fn.apply(this, args);
    }
  }
}
posted @   海胆Sur  阅读(5)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示