我使用下面的函数来检查 JSON 文件的状态。它每 8 秒运行一次(使用 setTimeout)来检查文件是否已更改。一旦 JSON 的状态变为“成功”,我就不再想继续调用该函数。有人可以告诉我如何做到这一点吗?我怀疑它涉及到 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();
});