📜  Lodash _.throttle() 方法

📅  最后修改于: 2022-05-13 01:56:27.669000             🧑  作者: Mango

Lodash _.throttle() 方法

Lodash是一个基于 underscore.js 的 JavaScript 库。 Lodash 有助于处理数组、字符串、对象、数字等。

lodash 中的_.throttle()方法用于创建一个节流函数,该函数每等待毫秒最多只能调用一次 func 参数。这里的节流函数有一个 cancel 方法,用于取消延迟的 func 调用,它还有一个 flush 方法,用于立即调用该延迟的 func。此外,它提供了一些选项,用于暗示是否应在等待超时的前沿和/或后沿调用所声明的函数。

句法:

_.throttle(func, wait, options)

参数:该方法接受三个参数,如上所述,如下所述:

  • func:要被限制的函数。
  • 等待:这是要限制调用的毫秒数。
  • options:它是选项对象。
    • options.leading:它定义了在超时前沿的调用。
    • options.trailing:它定义了超时后沿的调用。

返回值:此方法返回新的节流函数。

笔记:

  • 在这里, func 使用最后一个参数被调用,这些参数提供给受限制的函数。但是,对受限制函数的后续调用会返回最后一次 func 调用的结果。
  • 在这里,如果前导和尾随选项为真,则当且仅当在整个等待超时期间多次调用受限制的函数时,才会在超时的后沿调用 func。
  • 在这里,如果等待时间为 0 且前导选项为 false,则 func 调用将延迟到下一个刻度。

示例 1:

Javascript
// Requiring lodash library
const _ = require('lodash');
  
// Calling throttle() method with its parameter
var throt_fun = _.throttle(function () {
        console.log('Function throttled after 1000ms!');
    }, 1000);
  
throt_fun();


Javascript
// Requiring lodash library
const _ = require('lodash');
  
// Calling throttle() method with its parameter
var throt_fun = _.throttle(function() {
        console.log('Function throttled after 1000ms!');
    }, 1000);
  
// Defining loop
var loop = function() {
    setTimeout(loop, 5)
    throt_fun();
};
  
// Calling loop to start
loop();


Javascript
// Requiring lodash library
const _ = require('lodash');
  
// Calling throttle() method with its parameter
var throt_fun = _.throttle(function () {
    console.log('Function is called on the'
        + ' trailing edge of the timeout '
        + 'and throttled after 2000ms!');
    }, 2000, { 'trailing': true });
  
throt_fun();


输出:这里,函数在 1000 毫秒后被限制后,因为这里的等待时间是 1000 毫秒。

Function throttled after 1000ms!

示例 2:

Javascript

// Requiring lodash library
const _ = require('lodash');
  
// Calling throttle() method with its parameter
var throt_fun = _.throttle(function() {
        console.log('Function throttled after 1000ms!');
    }, 1000);
  
// Defining loop
var loop = function() {
    setTimeout(loop, 5)
    throt_fun();
};
  
// Calling loop to start
loop();

输出:所以,在你手动停止循环之前,循环不会停止。

Function throttled after 1000ms!
Function throttled after 1000ms!
Function throttled after 1000ms!
Function throttled after 1000ms!
Function throttled after 1000ms!
Function throttled after 1000ms!
.
.
.
.
// So on until you stop it manually.

示例 3:这里,函数在超时后沿调用。

Javascript

// Requiring lodash library
const _ = require('lodash');
  
// Calling throttle() method with its parameter
var throt_fun = _.throttle(function () {
    console.log('Function is called on the'
        + ' trailing edge of the timeout '
        + 'and throttled after 2000ms!');
    }, 2000, { 'trailing': true });
  
throt_fun();

输出:

Function is called on the trailing edge of the 
timeout and throttled after 2000ms!

参考: https://lodash.com/docs/4.17.15#throttle