The function to throttle.
The number of milliseconds to delay; if omitted, requestAnimationFrame
is used (if available).
The options object.
// Avoid excessively updating the position while scrolling.
jQuery(window).on('scroll', throttle(updatePosition, 100))
// Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
const throttled = throttle(renewToken, 300000, { 'trailing': false })
jQuery(element).on('click', throttled)
// Cancel the trailing throttled invocation.
jQuery(window).on('popstate', throttled.cancel)
Creates a throttled function that only invokes
func
at most once per everywait
milliseconds (or once per browser frame). The throttled function comes with acancel
method to cancel delayedfunc
invocations and aflush
method to immediately invoke them. Provideoptions
to indicate whetherfunc
should be invoked on the leading and/or trailing edge of thewait
timeout. Thefunc
is invoked with the last arguments provided to the throttled function. Subsequent calls to the throttled function return the result of the lastfunc
invocation.Note: If
leading
andtrailing
options aretrue
,func
is invoked on the trailing edge of the timeout only if the throttled function is invoked more than once during thewait
timeout.If
wait
is0
andleading
isfalse
,func
invocation is deferred until the next tick, similar tosetTimeout
with a timeout of0
.If
wait
is omitted in an environment withrequestAnimationFrame
,func
invocation will be deferred until the next frame is drawn (typically about 16ms).See David Corbacho's article for details over the differences between
throttle
anddebounce
.