防抖和节流

130 阅读1分钟

解决频繁调用很可能会造成页面的卡顿问题,引入了防抖和节流的方法

1.防抖原理:

_.debounce(doSomething,300)

事件响应函数(doSomething)在一段时间(300ms)后才执行,如果在这段时间内(小于300ms)再次调用,则重新计算执行时间(重新计算300ms); 当预定的时间内没有再次调用,则执行doSomething

2.防抖应用场景:

  • scroll滚动事件触发
  • 搜索框输入查询
  • 按钮提交事件
  • 浏览器窗口缩放

3.节流原理:

_.throttle(doSomething,300)

如果你持续触发事件,每隔一段时间,只触发一次

4.两者的区别

  • 函数节流不管事件触发有多频繁,都会保证在规定时间内一定会执行一次
  • 函数防抖只是在最后一次事件后才触发一次函数。
  • 比如在页面的无限加载场景下,我们需要用户在滚动页面时,每隔一段时间发一次 Ajax 请求,而不是在用户停下滚动页面操作时才去请求数据。这样的场景,就适合用节流技术来实现。