The function to debounce.
Optionalwait: number = 0The number of milliseconds to delay; if omitted, requestAnimationFrame is
used (if available).
Optionaloptions: DebounceOptions = {}The options object.
Returns the new debounced function.
// Avoid costly calculations while the window size is in flux.
jQuery(window).on('resize', debounce(calculateLayout, 150))
// Invoke `sendMail` when clicked, debouncing subsequent calls.
jQuery(element).on('click', debounce(sendMail, 300, {
'leading': true,
'trailing': false
}))
// Ensure `batchLog` is invoked once after 1 second of debounced calls.
const debounced = debounce(batchLog, 250, { 'maxWait': 1000 })
const source = new EventSource('/stream')
jQuery(source).on('message', debounced)
// Cancel the trailing debounced invocation.
jQuery(window).on('popstate', debounced.cancel)
// Check for pending invocations.
const status = debounced.pending() ? "Pending..." : "Ready"
Creates a debounced function that delays invoking
funcuntil afterwaitmilliseconds have elapsed since the last time the debounced function was invoked, or until the next browser frame is drawn. The debounced function comes with acancelmethod to cancel delayedfuncinvocations and aflushmethod to immediately invoke them. Provideoptionsto indicate whetherfuncshould be invoked on the leading and/or trailing edge of thewaittimeout. Thefuncis invoked with the last arguments provided to the debounced function. Subsequent calls to the debounced function return the result of the lastfuncinvocation.Note: If
leadingandtrailingoptions aretrue,funcis invoked on the trailing edge of the timeout only if the debounced function is invoked more than once during thewaittimeout.If
waitis0andleadingisfalse,funcinvocation is deferred until the next tick, similar tosetTimeoutwith a timeout of0.If
waitis omitted in an environment withrequestAnimationFrame,funcinvocation will be deferred until the next frame is drawn (typically about 16ms).See David Corbacho's article for details over the differences between
debounceandthrottle.