限制事件侦听器每秒触发的次数

use*_*108 5 javascript

我正在使用Gamepad API - 特别是使用控制器上的操纵杆的轴.这些更新的位置经常发生 - 因此,我正在聆听的事件(棒上的动作)也会发生很多.有没有什么方法可以限制它发生,例如,每秒25次,以减少滞后?

bfa*_*tto 10

您无法限制触发JavaScript事件的速率,但您的事件处理程序可能会选择不对某些调用执行任何操作.这是一个使用的例子mousemove(我不知道你在谈论哪个Gamepad API):

var lastMove = 0;
document.addEventListener('mousemove', function() {
    // do nothing if last move was less than 40 ms ago
    if(Date.now() - lastMove > 40) {
        // Do stuff
        lastMove = Date.now();
    } 
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/jk3Qh/

  • 这是一个简单的解决方案,但您可能会错过“最后”事件,这在某些情况下很重要。 (3认同)