Skip to main content

throttle

_.throttle(wait, func) # Ⓢ [Ⓣ][1] Ⓝ

Creates a throttled function that only invokes func at most once per



every wait milliseconds. The throttled function comes with a cancel



method to cancel delayed func invocations and a flush method to



immediately invoke them. Provide options to indicate whether func



should be invoked on the leading and/or trailing edge of the wait



timeout. The func is invoked with the last arguments provided to the



throttled function. Subsequent calls to the throttled function return the



result of the last func invocation.





Note: If leading and trailing options are true, func is



invoked on the trailing edge of the timeout only if the throttled function



is invoked more than once during the wait timeout.





If wait is 0 and leading is false, func invocation is deferred



until to the next tick, similar to setTimeout with a timeout of 0.





See David Corbacho's article



for details over the differences between _.throttle and _.debounce.

Since​

0.1.0

Arguments​

  1. wait (number): The number of milliseconds to throttle invocations to.
  2. func (Function): The function to throttle.

Returns​

(Function): Returns the new throttled function.

Example​

// Avoid excessively updating the position while scrolling.
jQuery(window).on('scroll', _.throttle(100, updatePosition));

// Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
var throttled = _.throttle([300000, { 'trailing': false }], renewToken);
jQuery(element).on('click', throttled);

// Cancel the trailing throttled invocation.
jQuery(window).on('popstate', throttled.cancel);