我有一个包含setTimeout()方法的函数。
我有一个调用该功能的按钮,因此您可以多次点击此按钮并根据需要多次调用此功能。
有没有办法实际执行此功能,只有在没有其他具有活动计时器功能的实例的情况下?
答案 0 :(得分:2)
你必须跟踪你之前是否已经设置了这个计时器,以及它是否仍然是活动的,使用某种变量,其范围在多个按钮按下时保持不变。
没有内置功能可以告诉您使用此按钮启动的计时器是否仍在运行。你必须创建自己的。它可以像这样工作:
var buttonTimer;
function myButtonClick() {
if (!buttonTimer) {
buttonTimer = setTimeout(function() {
buttonTimer = null;
// put your timer code here
}, 2000);
}
}
只要有当前活动的计时器,这将忽略按钮单击。当没有计时器运行时,它将设置一个新的计时器。
因为您正在跟踪实际的计时器ID,所以您也可以自由地实现其他行为,例如取消之前的计时器(例如停止按钮)或通过取消之前的计时器将计时器重置为新的时间间隔计时器,然后设置一个新的。
答案 1 :(得分:0)
试试这个:
var Timer = function() {
var self = this;
this.running = false;
this.run = function() {
if(!self.running) {
self.running = true;
console.log('starting run');
setTimeout(function() {
self.running = false;
console.log('done running!');
}, 5000);
} else {
console.log('i was running already!');
}
}
return this;
}
var aTimer = new Timer();
并添加一个按钮用于测试目的:
<button onclick="aTimer.run()">Run!</button>