前端性能优化-防抖
防抖:如果短时间内大量触发同一事件,只会执行一次函数,将多次执行变为最后一次执行。
防抖函数的应用场景:
- 按钮提交场景:防⽌多次提交按钮,只执⾏最后提交的⼀次
- 服务端验证场景:表单验证需要服务端配合,只执⾏⼀段连续的输⼊事件的最后⼀次,还有搜索联想词功能类似⽣存环境请⽤lodash.debounce
代码实现如下:
/防抖debounce代码:
function debounce(fn,delay) {
var timer = null; // 创建一个标记用来存放定时器的返回值
return function () {
// 每当用户输入的时候把前一个 setTimeout clear 掉
clearTimeout(timer);
// 然后又创建一个新的 setTimeout, 这样就能保证interval 间隔内如果事件持续触发,就不会执行 fn 函数
timer = setTimeout(() => {
fn.apply(this, arguments);
}, delay);
}
}
浙公网安备 33010602011771号