Как очистить повторно установленную функцию setInterval в JQuery

0

Я использую приведенный ниже код для вызова функции рекурсивно на основе условия. Но как только 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){

        }});
    }
  • 1
    почему вы не просто используете setTimeout!
  • 0
    Вы должны вызывать clearInterval для interval , а не для testFunction . например, изменить clearInterval (testFunction); очиститьInterval (интервал);
Теги:
setinterval

3 ответа

2

Пытаться

setTimeout(callback function, timeout)

Это будет выполняться только один раз, и если вам нужно запустить этот единственный таймер, то снова вызовите его.

0

в 2019 году вы можете установить любое нужное вам состояние с помощью моего плагина jQuery/Zepto https://github.com/xpectmore/jQuery-Interval

0
if(interval != 'undefined'){
  clearInterval(testFunction); //clearinterval
}

Это должно быть:

if(interval !== undefined){
  clearInterval(interval); //clearinterval
}

Когда вы вызываете setInterval, вы возвращаете ссылку на фактический заданный интервал. Это ссылка, которую вам нужно передать clearInterval, чтобы остановить ее, а не обратный вызов, который должен выполняться setInterval.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню