我遇到了阻止先前触发的setTimeout函数的问题。
我发现了一些相关问题,给出解决方案是将time_out变量放在函数之外以使其工作。我试过但仍然没有工作。
this.A = function(){
if(time_out) clearTimeout(time_out);
// time_out is nothing here and this will return error
time_out = setTimeout(function(){ }, 3000);
}
-------------------------------------------------
this.time_out = 0;
this.A = function(){
if(this.time_out) clearTimeout(this.time_out);
//will run through, but the setTimeout setup previously will keep running...
this.time_out = setTimeout(function(){ }, 3000);
}
我累了把整个函数放到一个元素中并在重置时调用它
if(el.data('time_out')) clearTimeout(el.data('time_out'));
这很完美
答案 0 :(得分:2)
确保你在适当的范围内。
var timerFun = function(){
var me = this;
me.timer= undefined;
me.startTimeout = function(){
me.timer = setTimeout(me.SetterFunc, 3000);
};
me.setterFunc = function(){
alert('oh hai!');
me.ClearTimer();
};
me.clearTimer = function(){
if(me.timer!= undefined){
me.clearTimeout(me.timer);
}
};
return me;
};
答案 1 :(得分:2)
停止setTimeout非常容易。
var timeout = setTimeout(function(){
myFunc();
}, 1000);
function myFunc(){
//do something...
};
清除超时
clearTimeout(timeout);
答案 2 :(得分:1)
为超时创建触发器功能
startTimeOut(){
started = 1;
setTimeout(yourFunction, 2000);
}
然后你可以检查是否启动= 1你可以停止它,如果启动= 0则意味着它已停止
stopTimeOut(){
started = 0;
clearTimeout(yourFunction);
}