department-of-veterans-affairs/vets-website

View on GitHub
src/platform/utilities/data/debounce.js

Summary

Maintainability
A
3 hrs
Test Coverage
/**
 * @param {number}
 * @param {function}
 */
export default function debounce(wait, func) {
  let timeoutId;

  const debouncedFunc = function debouncedFunction(...args) {
    const context = this;
    clearTimeout(timeoutId);
    timeoutId = setTimeout(() => func.apply(context, args), wait);
  };

  debouncedFunc.cancel = function cancel() {
    clearTimeout(timeoutId);
  };

  return debouncedFunc;
}