函数节流throttle.js
我们这里说的throttle就是函数节流的意思。再说的通俗一点就是函数调用的频度控制器,是连续执行时间间隔控制。主要应用的场景比如:
- 鼠标移动,mousemove 事件
- DOM 元素动态定位,window对象的resize和scroll 事件
- 定时器版:
1 | var throttle = function(fn, interval) { |
- 时间戳版
1 | var throttle = function(fn, interval) { |
函数去抖debounce.js
debounce和throttle很像,debounce是空闲时间必须大于或等于 一定值的时候,才会执行调用方法。debounce是空闲时间的间隔控制。比如我们做autocomplete,这时需要我们很好的控制输入文字时调用方法时间间隔。一般时第一个输入的字符马上开始调用,根据一定的时间间隔重复调用执行的方法。对于变态的输入,比如按住某一个建不放的时候特别有用。
debounce主要应用的场景比如:
- 文本输入keydown 事件,keyup 事件,例如做autocomplete
1 | var debounce = function(fn, interval) { |
用法:
1 | document.addEventListener('mousemove', debounce(function() { |
额外性能优化方案:分时函数
1 | // 分时函数,避免一次加载过多数据,类似好友列表 |