在必定时间内执行一次,若是在此时间内再次触发,则从新计时app
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); } }
在必定时间内执行一次,若是在此时间内再次触发,则会拦截不执行this
const throttle = (func, timeout) => { let timer = null; return function (...args) { if (!timer) { timer = setTimeout(() => { timer = null; func.apply(this, args); }, timeout); } } }