【lodash】能不能让JavaScript一个方法一秒钟只执行一次,防止重复调用?
使用 Lodash 库来实现这个功能会更加简洁和方便。Lodash 提供了 _.throttle 函数,可以直接满足你的需求。
🚀 使用 Lodash 实现节流
Lodash 的 _.throttle 函数会创建一个新的节流函数,确保在指定的等待时间内最多只执行一次你传入的函数。
1. 安装并引入 Lodash
首先,你需要在你的项目中安装 Lodash。
npm install lodash
然后,在你的 JavaScript 文件中引入它。
import _ from 'lodash';
// 或者使用 CommonJS
// const _ = require('lodash');
2. 使用 _.throttle
你可以用 _.throttle 包装你的方法,并设置延迟时间为 1000 毫秒(即 1 秒)。
// 假设这是你的原始方法
function myFunction() {
console.log('方法执行了!', new Date().toLocaleTimeString());
}
// 使用 _.throttle 包装,限制为 1000 毫秒(1秒)执行一次
const throttledFunction = _.throttle(myFunction, 1000);
// 现在,即使你快速连续调用 throttledFunction,
// 它也会在第一次立即执行,然后忽略接下来1秒内的所有调用。
throttledFunction(); // 立即执行
throttledFunction(); // 被忽略
throttledFunction(); // 被忽略
setTimeout(() => {
throttledFunction(); // 1秒后,可以再次执行
}, 1000);
✨ 进阶用法
_.throttle 还提供了一个可选的配置对象,让你可以更精细地控制函数的执行时机。
leading: (boolean) 是否在节流周期的开始时立即执行函数。默认为true。trailing: (boolean) 是否在节流周期的末尾时执行函数。默认为true。
例如,如果你希望函数在节流周期开始时立即执行,但在周期结束时不再执行,可以这样配置:
const throttledFunction = _.throttle(myFunction, 1000, {
'leading': true,
'trailing': false
});
这个配置在防止按钮被重复点击等场景中非常有用,因为它能确保第一次点击立即响应,并忽略后续的所有点击,直到冷却时间结束。
posted on 2026-05-18 16:54 fox_charon 阅读(3) 评论(0) 收藏 举报
浙公网安备 33010602011771号