为什么JavaScript的setTimeout没有降低keydown的速度?

kle*_*wis 3 javascript jquery

当我不断按下keydown事件(字母k)时,为什么下面的keydown事件不会减慢3000 mil?如果我把手指放下,计数会迅速加起来,因为mcount上没有setTimeout.这是为什么?每次计数之间应该有延迟,但我无法让它工作......

var mcount = 0;
function playershoot() {
if(!game.playerHit){ 
      $(document).keydown(function(e){ 
        switch(e.keyCode){
        case 75: 
        clearTimeout();
        setTimeout(console.log(mcount++), 3000);
        break;
        }
    });
}

}
playershoot();
Run Code Online (Sandbox Code Playgroud)

任何建议将被认真考虑!

谢谢

I a*_*ica 6

1:setTimeout()返回timeoutId可以清除的a clearTimeout(timeoutId).你没有这样做......所以,在你的3秒延迟之后,所有这些超时都被称为背对背.

2:你console.log的执行是因为你没有把它包装成这样的函数:

setTimeout(function() { console.log(mcount++) }, 3000);
Run Code Online (Sandbox Code Playgroud)