解决频繁调用很可能会造成页面的卡顿问题,引入了防抖和节流的方法
1.防抖原理:
_.debounce(doSomething,300)
事件响应函数(doSomething)在一段时间(300ms)后才执行,如果在这段时间内(小于300ms)再次调用,则重新计算执行时间(重新计算300ms); 当预定的时间内没有再次调用,则执行doSomething
2.防抖应用场景:
- scroll滚动事件触发
- 搜索框输入查询
- 按钮提交事件
- 浏览器窗口缩放
3.节流原理:
_.throttle(doSomething,300)
如果你持续触发事件,每隔一段时间,只触发一次
4.两者的区别
- 函数节流不管事件触发有多频繁,都会保证在规定时间内一定会执行一次
- 函数防抖只是在最后一次事件后才触发一次函数。
- 比如在页面的无限加载场景下,我们需要用户在滚动页面时,每隔一段时间发一次 Ajax 请求,而不是在用户停下滚动页面操作时才去请求数据。这样的场景,就适合用节流技术来实现。