1、 防抖和节流都是防止短时间内高频触发事件的方案。
2、 防抖的原理是:如果一定时间内多次执行了某事件,则只执行其中的最后一次。
3、 节流的原理是:要执行的事件每隔一段时间会被冷却,无法执行。
4、 应用场景有:搜索框实时搜索,滚动改变相关的事件。
//@fn:要执行的函数
//@delay:设定的时限
//防抖函数
function debunce(fn, delay) {
let flag = null;
return function() {
if (flag) clearTimeout(flag)
//利用apply改变函数指向,使得封装后的函数可以接收event本身
flag = setTimeout(() = > fn. apply(this, arguments), delay)
}
//节流函数
function throttle(fn, delay) {
let flag = true;
return function() {
if (!flag) return false;
flag = false;
setTimeout(() = > {
fn. apply(this, arguments) flag = true
}, delay)
}
}

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.