Я использую приведенный ниже код для вызова функции рекурсивно на основе условия. Но как только 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){
}});
}
Пытаться
setTimeout(callback function, timeout)
Это будет выполняться только один раз, и если вам нужно запустить этот единственный таймер, то снова вызовите его.
в 2019 году вы можете установить любое нужное вам состояние с помощью моего плагина jQuery/Zepto https://github.com/xpectmore/jQuery-Interval
if(interval != 'undefined'){
clearInterval(testFunction); //clearinterval
}
Это должно быть:
if(interval !== undefined){
clearInterval(interval); //clearinterval
}
Когда вы вызываете setInterval, вы возвращаете ссылку на фактический заданный интервал. Это ссылка, которую вам нужно передать clearInterval, чтобы остановить ее, а не обратный вызов, который должен выполняться setInterval.
interval
, а не дляtestFunction
. например, изменить clearInterval (testFunction); очиститьInterval (интервал);