Loading editor...
/** * Reduce calls to the passed function. * * @param func - Function to debounce. * @param threshold - The delay to avoid recalling the function. * @param execAsap - If true, the Function is called at the start of the threshold, otherwise the Function is called at the end of the threshold. */ export function debounce(func, threshold, execAsap = false) { let timeout; return function debounced(...args) { const self = this; if (timeout) clearTimeout(timeout); else if (execAsap) func.apply(self, args); timeout = setTimeout(delayed, threshold || 100); function delayed() { if (!execAsap) func.apply(self, args); timeout = null; } }; }