我有多個需要在系列中調用的進程(我正在使用同步AJAX調用)。我想在完成後顯示長時間運行的進程的狀態,然後進入下一個進程。這是我寫的一個示例代碼。如何在AJAX/Javascript中調用長時間運行的過程時更新UI?
var counter = 0;
function runProcess(input, output) {
doWork();
doWork();
doWork();
};
function doWork() {
counter++;
document.getElementById('<%=this.progressMonitor.ClientID%>').innerHTML += "Running " + counter;
// some lengthy calculations
for (var i = 0; i < 1000000; i++) {
var foo = Math.random();
}
setTimeout(updateStatus, 1000);
};
function updateStatus() {
document.getElementById('<%=this.progressMonitor.ClientID%>').innerHTML += "Done " + counter;
}
當我跑,我得到如下回應:
運行1運行2Running 3Done 3Done 3Done 3
我想獲得
運行1Done 1運行2Done 2Running 3Done 3
如果我在updateStatus功能插入一個警報()語句,然後我得到的我想要的響應/執行順序。瀏覽器是否爲3個函數調用創建3個線程並異步執行它們?
我怎樣才能在系列跑的? setTimeout是否正確實施?感謝您的幫助提前。
Ajax調用如何在這裏?他們是否會去你樣本中有數學循環的地方? – slashingweapon
感謝您的幫助。我剛剛注意到你以前的帖子。爲了澄清,這是一個示例代碼。在現實世界中,doWork將被一個CallService函數替代,該函數將同步調用WCF服務。 – akash