我写了下面的计时器函数来检查我的数据库每x秒...我想要做的是暂停计时器,直到ajax完成,然后一旦完成再次启动它。
目前,它从x秒倒计时到0,当它达到0时,发生ajax检查。一旦达到0,计时器将重置为x秒,并继续运行直至停止。
我使用ajax将任意数量的图片加载到网页上,因此加载这些图片可能需要一些时间......这就是暂停的原因。
// start timer
$('#dtStart').on('click', function () {
if(timerStatus != true) {
var timerCount = $('#dtRefresh').val();
$("#dtStart").addClass('hide');
$("#dtStop").removeClass('hide');
}
function countdown(count) {
if(timerStatus != true) {
timerStatus = true;
timerId = setInterval(function() {
count--;
$("#dtTimer").html(count);
if(count == 0) {
$("#dtTimer").html(count);
count = timerCount;
$.ajax({
type: 'post',
url: '/process/p_realtime_screenshots.php',
data: { ss_id : $("#slider .slides-content:eq("+(slider.count - 1)+")").data('id') },
dataType : 'json'
}).done(function (response) {
if (response.success)
{
//add new screenshots
$.each( response.screenshots, function( index, value )
{
//add the slide
slider.addSlide('screenshot added here');
//correct the count
$(".slide-total-slides").text(" of "+slider.count);
});
//stop playing slider if it is and auto go to last slide added
$('#slider').flexslider("stop");
$('#slider').flexslider(slider.count - 1);
}
});
}
}, 1000);
}
}
countdown(timerCount);
});
答案 0 :(得分:0)
您可以使用clearInterval()
在AJAX请求开始时停止计时器,然后在success
事件中再次启动计时器:
$.ajax({
...
beforeSend:function(){ clearInterval(timerId);}
success : function(){ /* Start timer again here */}
...
});