防抖动是将多次执行变为最后一次执行,节流是将多次执行变成每隔一段时间执行!!!!!!!!!!!!!
节流
throttle(节流),当持续触发事件时,保证隔间时间触发一次事件。
持续触发事件时,throttle 会合并一定时间内的事件,并在该时间结束时真正去触发一次事件。
//节流
export const throttle = (fn, gapTime=500)=> {
//定义为空
let lastTime = null;
return function () {
let nowTime = + new Date()
if (nowTime - lastTime > gapTime || !lastTime) {
fn();
lastTime = nowTime
}
}
}
防抖
debounce(防抖),简单来说就是防止抖动。
当持续触发事件时,debounce 会合并事件且不会去触发事件,当一定时间内没有触发再这个事件时,才真正去触发事件。
export const debounce=(fn, wait=1000)=> {
var timer = null;
return function () {
var context = this
var args = arguments
if (timer) {
clearTimeout(timer);
timer = null;
}
timer = setTimeout(function () {
fn.apply(context, args)
}, wait)
}
}
调用方法
//点击事件(事情名称,时间)
onClick={debounce(()=>agentssearch(),1000)