我有一個朋友想要將數據從一個數據庫增量移動到另一個數據庫,並在此過程中顯示錯誤。我覺得我可以通過爲他編寫一個快速腳本來幫忙,並且我在大約一個小時內完成了它,並且在Opera和Firefox(使用蜻蜓和螢火蟲進行測試)中運行良好。當他在Chrome中試用時,瀏覽器被鎖定,直到for或while循環完成,並且花費相當長的時間才能完成。這裏是我的代碼(不讀取json的錯誤扣部分):JS for和while循環與jQuery ajax在Chrome中鎖定
jQuery.noConflict();
jQuery('#myForm').submit(function(form) {
form.preventDefault();
var increment = (jQuery("input#increment").val())*1;
var total = jQuery("input#total").val();
var progress = 0;
jQuery("#progressbar").progressbar({value: 0});
//for (progress = 0; progress < total; progress = progress + increment)
while (progress < total)
{
jQuery.ajax({
url: 'progressBarAjax.php',
type: "POST",
async: false,
dataType: "json",
data: {
ajax: 'goAjax',
total: total,
increment: increment,
progress: progress
},
success: function(data){
jQuery("#progressbar").progressbar({value: data.value});
}
});
progress = progress + increment;
}
});
也,以備將來參考,用於捕捉錯誤的代碼已經在調試和data.value =地板(($進步剝離/ $ total)* 100)。你也可以看到我曾經嘗試過的地方,並且都可以在Opera和Firefox中正常工作,但不能在Chrome中正常工作。
知道爲什麼發生這種行爲將很高興知道未來的項目,但我也想寫得很好。目標是花費20萬次插入/更新,並將它們分解爲更小的塊,同步運行查詢,並更新進程中的進度條。
進度條是否在Chrome上以適當的時間間隔更新? – MyStream
如果我將alert()放在中間,但瀏覽器在while循環結束之前無響應,進度條會更新。 增量是表單中傳遞的任何內容。因此,如果您可以使總數爲500並增加100,您應該看到進度條每次更新5次,每次20%。適用於FF和Opera,不適用於Chrome。 – dasper
所以你要求瀏覽器執行'總計'儘可能快?你可能只需要錯開或定時你的獲取,所以它不會壓倒瀏覽器。 – Fresheyeball