概念:顾名思义,防止短时间内重复发送请求给服务器造成压力 实现原理:多次触发发送机制只发送最后一次的请求 举例:input框 js监听input框用户输入值发生变化,发送请求
let t = null
ipt.oninput = function {
console.log(this.value) // 发送请求
if(t !== null) {
clearTimeout(t) // 如果有定时器,拦截全部,只执行最后一次的定时器事件
}
t = setTimeout(() => {
console.log(this.value)
}, 500
)
}
封装为一个函数块
let ipt = document.querySelector('input')
ipt.oninput = deShake(function () {
console.log(this.value)
}, 1000)
function deShake(fn, delay) {
let t = null
return function () {
if (t !== null) {
clearTimeout(t)
}
t = setTimeout(() => {
fn.call(this)
}, delay)
}
}