Mootools периодическая функция и перемотка времени

У меня есть некоторое функциональное TAHT, периодически вызывающая сторона:

var func = function() {
    alert('Hello world!');
};
func.periodical(5000);

Эта функция также вызвана с click событие:

$('element').addEvent('click', function(){
    func();
});

Таймер запускает и считает 2 500 мс, затем я нажимаю $('element'), func() выполняется и я хочу прямо сейчас сбросить таймер это func() не будет назван в следующие 2 500 мс, но в следующие 5 000 мс.

Как сделать это?

1
задан JJJ 3 June 2012 в 15:51
поделиться

2 ответа

Вы можете удалить периодический интервал и установить его снова при щелчке по элементу. Чтобы не носить с собой лишнюю переменную, вы можете сохранить ссылку на таймер в самом объекте функции.

func.timer = func.periodical(5000);

$('element').addEvent('click', function() {
    func();
    $clear(func.timer);
    func.timer = func.periodical(5000);
});
2
ответ дан 3 September 2019 в 00:00
поделиться

Я думаю, что проще всего было бы сделать так, чтобы функция возвращалась, если она обнаружит, что с момента ее последнего запуска прошло менее 5000 миллисекунд.

var func = (function() {
  var ts = new Date();
  return function(force) {
    var now = new Date();
    if (!force && now - ts < 5000)
      return;
    alert("Hi!");
    ts = now;
  };
})();
func.periodical(5000);

$('element').addEvent('click', function() {
  func(true);
});

В обработчике событий функция вызывается с параметром, который заставляет ее игнорировать таймер. Этот механизм, конечно, немного хрупок.

0
ответ дан 3 September 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: