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 30 31 32 33 34
| function debounce(fn, delay, triggerNow) { let t = null, res;
const debounced = function () { let _self = this, args = arguments;
if (t) { clearTimeout(t); }
if (triggerNow) { let exec = !t; t = setTimeout(function () { t = null; }, delay); if (exec) { res = fn.apply(_self, args); } } else { t = setTimeout(function () { res = fn.apply(_self, args); }, delay); } return res; };
debounced.remove = function () { clearTimeout(t); t = null; }; return debounced; }
|