UNPKG

@squirrel-forge/ui-util

Version:

A collection of utilities, classes, functions and abstracts made for the browser and babel compatible.

27 lines (25 loc) 790 B
/** * @callback DebounceEventHandler * @param {Event} event - Event object * @return {void} */ /** * Debounce event * @param {Function|DebounceEventHandler} func - Event handler * @param {null|number} delay - Debounce delay, default: 350 * @param {null|Function} always - Always run callback * @return {function(*=): void} - Wrapped callback */ export function debounce( func, delay = null, always = null ) { delay = typeof delay === 'number' ? delay : 350; let timer = 0; return function( ...params ) { let cancel = false; if ( always ) cancel = always( ...params ); if ( timer ) { window.clearTimeout( timer ); timer = 0; } if ( !cancel ) timer = window.setTimeout( func, delay, ...params ); }; }