1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| function debounce(fn, delay, immediate = false) { let timer = null; let flag = immediate;
return function (...arg) { if (timer) { clearTimeout(timer); }
if (immediate && flag) { fn.apply(this, arg); flag = false; }
timer = setTimeout(() => { fn.apply(this, arg); timer = null; }, delay); }; }
|