防抖
在肯定工夫内执行一次,如果在此工夫内再次触发,则从新计时
const debounce = (func, timeout, immediate = false) => { let timer = null; return function (...args) { if (!timer && immediate) { func.apply(this, args); } if (timer) { clearTimeout(timer); } timer = setTimeout(() => { func.apply(this, args); }, timeout); }}
在肯定工夫内执行一次,如果在此工夫内再次触发,则会拦挡不执行
const throttle = (func, timeout) => { let timer = null; return function (...args) { if (!timer) { timer = setTimeout(() => { timer = null; func.apply(this, args); }, timeout); } }}