如果功能正常执行,如何停止计时器?

时间:2015-05-19 08:33:22

标签: javascript jquery

如果某些内容匹配,Section()负责查看数据库并获取任何HTML代码。如果没有匹配,则没有回调(但我可以回调一个空的东西)。

然后调用addIt()并显示HTML。工作正常。

我的问题是什么时候从数据库中获取一些HTML来停止计时器?因为现在它每10秒添加一次HTML。

function addIt(data) { $(data).insertAfter('#hello'); }

setInterval(function Section(){
      $.getJSON("domain"+ number, addIt);
}, 10000);

3 个答案:

答案 0 :(得分:1)

也许是这样的:

var x = setInterval(function Section(){
  $.getJSON("domain"+ number, addIt);
}, 10000);

if( // something ) {
   clearInterval(x);
 }

答案 1 :(得分:0)

var timerId;

function addIt(data) { 
  $(data).insertAfter('#hello');
}

function section() {
  $.getJSON().done(function(data) {
    addIt(data);

    if (timerId) {
      clearInterval(timerId);
    }
  });
}

timerId = setInterval(section, 10000);

答案 2 :(得分:0)

我绝不会在一段时间内调用AJAX。而是使用回调再次调用

function Section(){
   $.getJSON("domain"+number,addIt);
}
function addIt(data) { 
    if (data) $(data).insertAfter('#hello'); 
    else setTimeout(Section,10000); // call again in 10 seconds unless data was returned
}
Section(); // first call

如果在不返回数据时调用导致错误,请尝试:

$.getJSON("domain"+number, function(data) {
  if (data) $(data).insertAfter('#hello'); 
})
.fail(function() { 
  setTimeout(Section,10000);
});