Mootools期刊功能和时间倒带

时间:2010-06-07 11:00:22

标签: javascript mootools

我有一些函数taht是定期调用者:

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

此函数也使用click事件调用:

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

计时器启动并计数2500毫秒,然后我点击$('element'),执行func(),我现在想要重置func()在下一个2500毫秒内不会被调用的计时器,但是跟随5000毫秒。

怎么做?

2 个答案:

答案 0 :(得分:2)

您可以删除定期间隔,并在单击元素时再次设置。为了避免携带额外的变量,可以将定时器引用存储在函数对象本身中。

func.timer = func.periodical(5000);

$('element').addEvent('click', function() {
    func();
    $clear(func.timer);
    func.timer = func.periodical(5000);
});

答案 1 :(得分:0)

我认为最简单的事情就是让函数返回,如果它检测到它自上次运行以来已经小于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);
});

在事件处理程序中,使用一个强制它忽略计时器的参数调用该函数。这个机制当然有点脆弱。