首页 > 解决方案 > JS函数在执行后的特定时间内自禁用

问题描述

我正在尝试创建一个由按键执行并在执行后禁用特定时间的函数。

function do_something() {
    console.log('lorem ipsum');
}

document.onkeypress = function(e) {
  if (e.keyCode == '32') {
    do_something();
  }
}

有没有办法在每次执行后禁用它(比如说)2秒?

标签: javascript

解决方案


是的,有一种方法:使用Timeout临时将布尔值设置为某个值,然后在调用之前do_something()检查它的值。

例子:

let cooldown = false;
const RECHARGE_TIME = 2000; //ms

function do_something() {
    console.log('lorem ipsum');
}

document.onkeypress = function(e) {
    if (!cooldown && e.keyCode == '32') {
        do_something();
        startCooldown();
    }
}

function startCooldown() {
    cooldown = true;
    setTimeout (function(){ cooldown = false}, RECHARGE_TIME);
}

编辑:正如Mosè Raguzzini所指出的:根据准确性的重要性,也许这不是最好的方法,因为(如您在此处看到的)它可能不准确。


推荐阅读