我使用下面的代码根据条件递归调用函数。但是一旦设置了setInterval,就不清楚了,并且一次又一次地设置了setInterval。 如何清除重复设置的setInterval函数?
function testFunction(ttlcount){
jQuery.ajax({url:URL,
type: "POST",
data: { 'action_sub':'action'},
success:function(res){
if(res < 0){
if(interval != 'undefined'){
clearInterval(setInterval); //clearinterval
}
interval = setInterval(function(){testFunction(ttlcount)},1000);
} else {
clearInterval(interval);//clearinterval
//Do something ...
}
},error:function(e){
}});
}
答案 0 :(得分:2)
尝试
setTimeout(callback function, timeout)
这只会运行一次,如果你需要运行这个单一计时器,那么再次调用它。
答案 1 :(得分:0)
if(interval != 'undefined'){
clearInterval(testFunction); //clearinterval
}
这应该是:
if(interval !== undefined){
clearInterval(interval); //clearinterval
}
调用setInterval时,会得到一个返回实际设置间隔的引用。这是你需要传递给clearInterval来停止它的引用,而不是setInterval要执行的回调。
答案 2 :(得分:0)
在2019年,您可以使用我的jQuery / Zepto插件设置所需的每个状态 https://github.com/xpectmore/jQuery-Interval