вместо таймаутов?

аюсь найти чистый способ агрегирования событий перемещения мыши, чтобы гарантировать, что мой код вызывается, но только один раз каждые 250-300 миллисекунд.

Я думал об использовании чего-то подобного следующему, но мне было интересно, есть ли лучший шаблон или что-то, что предоставляет jQuery, который будет делать то же самое:

var mousemove_timeout = null;

$('body').mousemove(function() {
  if (mousemove_timeout == null) {
    mousemove_timeout = window.setTimeout(myFunction, 250);
  }
});

function myFunction() {
  /*
   * Run my code...
   */

  mousemove_timeout = null;
}

РЕДАКТИРОВАТЬ: Принятый ответ, приведенный ниже, отлично подойдет для этой ситуации, однако я обнаружил, чтоmousestop() функциональность, представленная в ответе, фактически устранила мою потребность в агрегировании, поэтому, если вы читаете этот вопрос и ищете ответ, посмотрите,mousestop плагин это то, что вам действительно нужно!

Ответы на вопрос(9)

Ваш ответ на вопрос