NodeJS功能冷却时间

时间:2017-11-27 03:48:27

标签: javascript node.js function

我最近得到了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的油门,但它并没有像我预期的那样工作(可能只是把它配置错了)。

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果你想要一个更便携的解决方案,你应该给Lodash的debounce看看。

debounce的第一个参数是你要去抖动的功能。第二个参数是去抖动函数的毫秒数。 debounce返回去抖动函数。

使用您的代码,您可以这样使用它:

function foo() { 
    // do stuff 
}

let debouncedFoo = _.debounce(foo, 5000); // debounce for 5 seconds

debouncedFoo(); // call it repeatedly