在JavaScript中,防抖和节流是非常常见的,主要应用一些高频事件的触发
防抖 是在一段时间内,只取最后一次结果;使用场景:用于输入框在输入的时候模糊搜索,减少对服务器的高频请求。写一个防抖函数
/**
* fn: 执行函数
* wait:隔多久执行一次
*/
function fangDou(fn, wait){
// 定义一个计时器
let timer = null;
return function () {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
fn()
}, wait)
}
}
节流 是指在一段时间内,只触发一次;使用场景:轮播图,写一个节流函数
/**
* fn: 执行函数
* wait: 时间
*/
function jieLiu(fn, wait) {
let flag = true;
return function () {
if (flag) {
flag = false;
setTimeout(() => {
// 改变this指向
fn.apply(this);
flag = true;
}, wait)
}
}
}