我使用下面的函数来检查JSON文件的状态。它每8秒运行一次(使用setTimeout)来检查文件是否发生了变化。一旦JSON的状态变为“success”,我就不再想继续调用该函数。有人能告诉我如何做到这一点吗?我怀疑这涉及到clearTimeout的使用,但我不确定如何实现。
干杯!
干杯!
$(function() {
var checkBookStatus = function() {
var job_id = "#{@job.job_id}";
var msg = $('.msg');
var msgBuilding = $('#msg-building');
var msgQueuing = $('#msg-in-queue');
var msgSuccessful = $('#msg-successful-build');
var msgError = $('#msg-error');
$.ajax({
url: '/jobs/'+job_id+'/status.json',
datatype: 'JSON',
success:function(data){
if (data.status == "failure") {
msg.hide();
msgError.show();
}
else if (data.status == "#{Job.queue}") {
msg.hide();
msgQueuing.show();
}
else if (data.status == "#{Job.building}") {
msg.hide();
msgBuilding.show();
}
else if (data.status == "#{Job.failure}") {
msg.hide();
msgError.show();
}
else if (data.status == "#{Job.success}") {
msg.hide();
msgSuccessful.show();
}
},
}).always(function () {
setTimeout(checkBookStatus, 8000);
});
};
checkBookStatus();
});
t = setTimeout(...)
而不是<b>var<b> t = setTimeout(...)
,其中的变量t
必须设置为全局变量。 - Ahmed Jolanic=0;
在外部,现在在调用超时检查之前检查计数器,在调用之后增加计数器c
。 - Ahmed Jolani