Javascript Mootools定期功能和时间倒带
我有一些函数是定期调用的:Javascript Mootools定期功能和时间倒带,javascript,mootools,Javascript,Mootools,我有一些函数是定期调用的: var func = function() { alert('Hello world!'); }; func.periodical(5000); 此函数也可通过单击事件调用: $('element').addEvent('click', function(){ func(); }); 计时器开始计时2500毫秒,然后我单击$('element'),执行func(),我现在想重置计时器,使func()不会在接下来的2500毫秒内调用,而是在接下来的5
var func = function() {
alert('Hello world!');
};
func.periodical(5000);
此函数也可通过单击事件调用:
$('element').addEvent('click', function(){
func();
});
计时器开始计时2500毫秒,然后我单击$('element')
,执行func()
,我现在想重置计时器,使func()
不会在接下来的2500毫秒内调用,而是在接下来的5000毫秒内调用
如何做到这一点?我认为最简单的方法是,如果函数检测到它自上次运行以来已少于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);
});
var func=(函数(){
var ts=新日期();
返回功能(强制){
var now=新日期();
如果(!强制和立即-ts<5000)
返回;
警惕(“嗨!”);
ts=现在;
};
})();
本刊(5000);
$('element')。addEvent('click',function(){
func(真);
});
在事件处理程序中,使用一个参数调用函数,该参数强制函数忽略计时器。当然,这种机制有点脆弱。您可以删除定期间隔,并在单击元素时重新设置。为了避免携带额外的变量,可以将计时器引用存储在函数对象本身中
func.timer = func.periodical(5000);
$('element').addEvent('click', function() {
func();
$clear(func.timer);
func.timer = func.periodical(5000);
});
这不是这样做的方式。这样做的好处是它比给出的其他答案更能让计时器“准时”。用新的5秒超时重新开始对我来说更糟糕。