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