javascript - 我不想很快地运行同一个命令两次

标签 javascript wait

所以我这里有这段代码:

lockskipCommand = (function(_super) {

__extends(lockskipCommand, _super);

function lockskipCommand() {
  return lockskipCommand.__super__.constructor.apply(this, arguments);
}

lockskipCommand.prototype.init = function() {
  this.command = '/lockskip';
  this.parseType = 'exact';
  return this.rankPrivelege = 'bouncer';
};

lockskipCommand.prototype.functionality = function() {
  data.lockBooth();
  new ModerationForceSkipService();
  return setTimeout((function() {
    return data.unlockBooth();
  }), 4500);
};

return lockskipCommand;

})(Command);

我希望能够让它有某种冷却,所以它不能连续快速使用。我想要这个的原因是为了防止人们被跳过,因为这就是这段代码用于跳过人的原因。

我希望这些信息足以获得一些帮助。谢谢!

最佳答案

您可以使用下划线的 debounce()方法(以 true 作为第三个参数)。

如果您不想为这个简单的任务包含 Underscore,您可以...

var debounceFn = function (fn, delay) {
    var lastInvocationTime = Date.now();
    delay = delay || 0;

    return function () {
        (Date.now() - delay > lastInvocationTime) && (lastInvocationTime = Date.now()) && fn && fn();;
    };
};

jsFiddle .

What I need is a way to not be able to execute the command more than once in a row.

你可以做类似的事情......

var onceFn = function (fn) {
    var invoked = false;

    return function () {
        ! invoked && (invoked = true) && fn && fn();
    };
};

jsFiddle .

关于javascript - 我不想很快地运行同一个命令两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17422274/

相关文章:

javascript - 有选择地显示背景图像

java - 调用wait()时发生IllegalMonitorStateException

C++ 等待所有线程完成

c - 如何等待所有子进程终止并获取每个退出状态

java - 等待特定线程的调用

javascript - IE 媒体查询 javascript 'response' 不起作用

javascript - 将 <link rel ="stylesheet"> 原始内容加载到 &lt;style&gt; 标签中

javascript - 使用 Node.js 驱动程序打印和更新 MongoDB 中的所有文档

javascript - HTML/Canvas - 使用另一个 Canvas 绘制图像性能

java - 同步传递的对象时,JFrame 卡住