我有一個JavaScript函數應該檢查任務是否完成。 當任務完成時,服務器上的文件中會有一個完成記錄。 該函數應該使服務器有一些延遲(可能增加)遞歸調用,直到它獲得文件中的完成記錄。 下面給出的代碼使過度調用以從Web控制檯與間隔小於第二 例的服務器: [20:06:21.202] [20:06:21.563] [20:06:21.990] 但是任務變得競爭了可變WAITTIME值變得等於max_waittime。 儘管對於測試用例來說總體輸出與預期相同,但該函數有些問題。 我哪裏錯了?檢查任務是否完成
function check_status(time,div_id,filename) {
var status =0;
var waittime=time;
var max_waittime=11000000;
if (waittime < max_waittime){waittime=waittime+1000000; }
$.ajax({
type: "GET",
async: false,
url: "code_on_server_checking_file.php",
data: "f="+filename,
dataType: "text",
success: function(content) {
if (content) {
// stuff related to output of the result
....
return status=1;
}
else {return status=0;}
}
});
if (status == 0 && waittime < 20000000){
setTimeout(check_status(waittime,div_id,filename),waittime);
}
else {alert('check_status passed!'+status+'|'+waittime);}
}
關於'async'調用的好處。我錯過了。 –