1、函数防抖
概念:在规定的时间内,让最后一次函数调用生效,前面函数都要取消,使用定时器来实现。也就是说:延迟要执行的动作,若在延时的这段时间内,再次出发,则取消之前开启的动作, 重新开始计时:
如下所示:如果在500ms内连续触发handleToggleFace函数,console.log只会执行最后触发的一次
handleToggleFace() {
clearTimeout(timer)
timer = setTimeout(() => {
console.log('函数防抖')
}, 500)
}
应用:表单搜索框、滚动条触底发请求等,可以减轻接口请求压力
2、函数节流
概念:设定特定的时间,让函数在特定事件内置执行一次,不会频繁执行;只执行一次执行的是第一次触发的函数,在规定的时间内,此函数不会再次执行。
如下所示:在500ms之内,timer是一个对象,此时直接return 500ms之后timer是null,继续执行
handel(){
if (timer) {
return;
}
timer = setTimeout(() => {
console.log('函数节流')
timer = null;
}, 500)
}