防抖和节流
防抖: 触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。
解决问题:用户触发时间过于频繁,只要最后一次时间的操作单位
节流: 高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率。
解决问题:控制高频事件的执行次数
//防抖函数
function debounce (fn, delay) {
let t = null;
return function() {
if( t !== null) {
clearTimeout(t);
}
t = setTimeout(() => {
fn.call(this)
}, delay)
}
}
//节流函数
function throttle(fn, delay) {
let flag = true;
return function(){
if(flag) {
setTimeout(() => {
fn.call(this);
flag = true;
})
flag = false
}
}
}