UNPKG

label-studio

Version:

Data Labeling Tool that is backend agnostic and can be embedded into your applications

29 lines (27 loc) 780 B
/** * Returns a function, that, as long as it continues to be invoked, * will not be triggered. The function will be called after it * stops being called for N milliseconds. If `immediate` is passed, * trigger the function on the leading edge, instead of the trailing. * * @param {function} func * @param {number} wait * @param {boolean} immediate */ export function debounce(func, wait, immediate) { let timeout; return function() { const context = this, args = arguments; const later = () => { timeout = null; if (!immediate) { func.apply(context, args); } }; const callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; }