我希望不能很快地运行同一个命令两次

I want to not be able to run the same command twice very quickly

本文关键字:两次 命令 同一个 不能 很快 运行 我希望      更新时间:2023-09-26

所以我在这里有这段代码:

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);

我想让它冷却一下,这样它就不能连续快速使用了。我想要这样做的原因是为了防止人们被跳过,因为这就是这段代码用来跳过人们的地方。

我希望这是足够的信息来获得一些帮助。谢谢

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

如果你不想把Undercore包括在这个简单的任务中,你可以做…

var debounceFn = function (fn, delay) {
    var lastInvocationTime = Date.now();
    delay = delay || 0;
    return function () {
        (Date.now() - delay > lastInvocationTime) && (lastInvocationTime = Date.now()) && fn && fn();;
    };
};

jsFiddle。

我需要的是一种不能连续执行命令一次以上的方法。

你可以做一些类似的事情。。。

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

jsFiddle。