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](https://css-tricks.com/debouncing-throttling-explained-examples/) for details over the differences between `throttle` and `debounce`.
// 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)
| Name | Type | Attribute | Description |
|---|---|---|---|
| func | The function to throttle. | ||
| wait | The number of milliseconds to throttle invocations to. | ||
| options | The options object. | ||
| options.leading | Specify invoking on the leading edge of the timeout. | ||
| options.trailing | Specify invoking on the trailing edge of the timeout. |
{
"comment": "/**\r\n * Creates a throttled function that only invokes `func` at most once per\r\n * every `wait` milliseconds. The throttled function comes with a `cancel`\r\n * method to cancel delayed `func` invocations and a `flush` method to\r\n * immediately invoke them. Provide `options` to indicate whether `func`\r\n * should be invoked on the leading and/or trailing edge of the `wait`\r\n * timeout. The `func` is invoked with the last arguments provided to the\r\n * throttled function. Subsequent calls to the throttled function return the\r\n * result of the last `func` invocation.\r\n *\r\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\r\n * invoked on the trailing edge of the timeout only if the throttled function\r\n * is invoked more than once during the `wait` timeout.\r\n *\r\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\r\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\r\n *\r\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\r\n * for details over the differences between `throttle` and `debounce`.\r\n *\r\n * @since 0.1.0\r\n * @category Function\r\n * @param {Function} func The function to throttle.\r\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\r\n * @param {Object} [options={}] The options object.\r\n * @param {boolean} [options.leading=true]\r\n * Specify invoking on the leading edge of the timeout.\r\n * @param {boolean} [options.trailing=true]\r\n * Specify invoking on the trailing edge of the timeout.\r\n * @returns {Function} Returns the new throttled function.\r\n * @example\r\n *\r\n * // Avoid excessively updating the position while scrolling.\r\n * jQuery(window).on('scroll', throttle(updatePosition, 100))\r\n *\r\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\r\n * const throttled = throttle(renewToken, 300000, { 'trailing': false })\r\n * jQuery(element).on('click', throttled)\r\n *\r\n * // Cancel the trailing throttled invocation.\r\n * jQuery(window).on('popstate', throttled.cancel)\r\n */",
"meta": {
"range": [
2165,
2625
],
"filename": "throttle.js",
"lineno": 46,
"path": "C:\\Users\\beaujeup\\projects\\jsdoc-template\\examples\\lodash\\lodash-repo",
"code": {
"id": "astnode100009542",
"name": "throttle",
"type": "FunctionDeclaration",
"paramnames": [
"func",
"wait",
"options"
]
},
"vars": {
"leading": "throttle~leading",
"trailing": "throttle~trailing"
}
},
"description": "Creates a throttled function that only invokes `func` at most once per\revery `wait` milliseconds. The throttled function comes with a `cancel`\rmethod to cancel delayed `func` invocations and a `flush` method to\rimmediately invoke them. Provide `options` to indicate whether `func`\rshould be invoked on the leading and/or trailing edge of the `wait`\rtimeout. The `func` is invoked with the last arguments provided to the\rthrottled function. Subsequent calls to the throttled function return the\rresult of the last `func` invocation.\r\r**Note:** If `leading` and `trailing` options are `true`, `func` is\rinvoked on the trailing edge of the timeout only if the throttled function\ris invoked more than once during the `wait` timeout.\r\rIf `wait` is `0` and `leading` is `false`, `func` invocation is deferred\runtil to the next tick, similar to `setTimeout` with a timeout of `0`.\r\rSee [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\rfor details over the differences between `throttle` and `debounce`.",
"since": "0.1.0",
"tags": [
{
"originalTitle": "category",
"title": "category",
"text": "Function",
"value": "Function"
}
],
"params": [
{
"type": {
"names": [
"function"
]
},
"description": "The function to throttle.",
"name": "func"
},
{
"type": {
"names": [
"number"
]
},
"optional": true,
"defaultvalue": 0,
"description": "The number of milliseconds to throttle invocations to.",
"name": "wait"
},
{
"type": {
"names": [
"Object"
]
},
"optional": true,
"defaultvalue": "{}",
"description": "The options object.",
"name": "options"
},
{
"type": {
"names": [
"boolean"
]
},
"optional": true,
"defaultvalue": true,
"description": "Specify invoking on the leading edge of the timeout.",
"name": "options.leading"
},
{
"type": {
"names": [
"boolean"
]
},
"optional": true,
"defaultvalue": true,
"description": "Specify invoking on the trailing edge of the timeout.",
"name": "options.trailing"
}
],
"returns": [
{
"type": {
"names": [
"function"
]
},
"description": "Returns the new throttled function."
}
],
"examples": [
"// Avoid excessively updating the position while scrolling.\rjQuery(window).on('scroll', throttle(updatePosition, 100))\r\r// Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\rconst throttled = throttle(renewToken, 300000, { 'trailing': false })\rjQuery(element).on('click', throttled)\r\r// Cancel the trailing throttled invocation.\rjQuery(window).on('popstate', throttled.cancel)"
],
"name": "throttle",
"longname": "throttle",
"kind": "function",
"scope": "global",
"___id": "T000002R000875",
"___s": true,
"filepath": "throttle.js"
}