123456789101112131415161718192021222324252627282930 |
- /**
- * Debounce a function to delay invoking until wait (ms) have elapsed since the last invocation.
- * @param {function(...*): *} fn The function to be debounced.
- * @param {number} wait Milliseconds to wait before invoking again.
- * @return {function(...*): void} The debounced function.
- */
- function debounce(fn, wait) {
- /**
- * A cached setTimeout handler.
- * @type {number | undefined}
- */
- let timer;
- /**
- * @returns {void}
- */
- function debounced() {
- const context = this;
- const args = arguments;
- clearTimeout(timer);
- timer = setTimeout(function () {
- return fn.apply(context, args);
- }, wait);
- }
- return debounced;
- }
- module.exports = debounce;
|