我正在處理一個程序,該程序通過使用XHR請求通過post方法向processId.php發送用戶標識來檢查用戶標識是否存在。我首先在ID數組中的for循環中嘗試了XHR請求,但是它殺死了瀏覽器,因爲它由數千個元素組成,因爲一次創建了數千個XHR請求。然後我在StackOverflow上找到一篇文章,說我不應該在for循環中使用XHR請求,而應該在函數中調用函數,以便我編寫以下代碼。該程序似乎工作,但殺死瀏覽器,因爲仍然有成千上萬的請求。當前請求完成後一次XHR請求
我想弄清楚一個星期後,如何在完成當前/進程內XHR請求後一次完成一個XHR請求。任何幫助?我可以爲此創建一個完整功能的任何解決方案。
PS:我不想使用jQuery。
<?php
$php_array_id = [element-1,element-2.........,element-n];
$js_array_id = json_encode($php_array);
echo "var userIds = ". $js_array_id . ";\n";
$url = "http://example.com/idProcess.php";
?>
<script>
function processNext(i) {
if (i < userIds.length) {
var http = new XMLHttpRequest();
var url = "<?php echo $url ?>";
var params = "id=" + userIds[i];
http.open("POST", url, true);
http.onreadystatechange = function() {
if(this.readyState == 4 && this.status == 200) {
if(this.responseText){
document.getElementById("reports").innerHTML += "<div>ID = " + this.responseText + " Exists</div>";
}
}
}
http.send(params);
i++;
processNext(i);
}
}
processNext(0);
</script>
你能解釋一下主要的變化嗎?我認爲這個函數應該在statechange函數中調用?對? –
是的,所以另一個請求會在前一個請求結束後立即發送。 – dormouse
是的..現在它正在發送請求,當一個結束。謝謝。 –