我最近得到了indo Node,如果有人有更好的方法设置全球冷却时间,我很好奇。他们的职能(类似于防洪系统)。我觉得我写的可能不是最有效的方法。这是我到目前为止所得到的:
var onCooldown = false;
function foo() {
if (onCooldown) return;
else {
// do stuff;
onCooldown = true;
setTimeout(function() {
onCooldown = false;
}, 5000);
}
}
它做什么(或应该做什么):当调用函数foo
时,它会检查onCooldown是真还是假。如果它是真的,它会返回。如果它是假的,它会完成它的东西,然后将onCooldown设置为true,持续5秒。这意味着可以调用该函数,但不会响应,持续5秒,因此“冷却”。
由于我是新手,我不知道如何执行此功能,但我想我知道最佳功能。使用当前代码,即使在冷却时也可以重复调用函数foo(这可能会影响性能?),因此如果在这5秒内可能使函数无法交互,那么这可能是最佳的。同样,我不知道该怎么做,这就是我要问的原因。
那里可能有一个npm,我需要指向正确的方向。我尝试过lodash的油门,但它并没有像我预期的那样工作(可能只是把它配置错了)。
提前致谢!
答案 0 :(得分:0)
如果你想要一个更便携的解决方案,你应该给Lodash的debounce
看看。
debounce
的第一个参数是你要去抖动的功能。第二个参数是去抖动函数的毫秒数。 debounce
返回去抖动函数。
使用您的代码,您可以这样使用它:
function foo() {
// do stuff
}
let debouncedFoo = _.debounce(foo, 5000); // debounce for 5 seconds
debouncedFoo(); // call it repeatedly