函数防抖:连续触发的事件,只会触发最后一次。每次触发的时候都会清除上一次待触发的。
const debounce = (func, wait) => { let timer; return (params) => { clearTimeout(timer); timer = setTimeout(() => {
func(params);
}, wait); }; };
函数节流:连续触发的事件,会按照一定的频率触发N次。每间隔一定的时间,必然会触发一次。
const throttle = (func, wait) => { let timer; return (params) => { if (timer) { // timer 存在则不会加入待执行中 return; } timer = setTimeout(() => { func(params); timer = null; // 间隔一定时间后执行一次,执行完后清空 timer 可再次执行 }, wait); }; };