我有一個腳本將HTTP請求發送到網站以獲取文檔,文檔ID保存在數組中。我想爲每個數組元素髮送一個請求,並根據HEAD的狀態返回一條消息(例如200 OK)。JavaScript - 針對數組中的每個元素的HTTP請求
我遇到的問題是,當我循環訪問URL數組時,僅使用最後一個數組元素髮送多個請求,但沒有使用其他元素。
代碼:
//send http request
function sendRequest(url) {
var newRequest = new XMLHttpRequest();
newRequest.onreadystatechange = function() {
if(newRequest.readyState == 4) {
if(newRequest.status == 200) {
console.log("loaded: " + url);
} else {
console.log("Failed to load: " + url);
}
}
}
newRequest.open("HEAD", url);
newRequest.send();
}
//send request for each url in array
for(var i = 0; i < urlArray.length; i++) {
//get document id and append to link
var address = "https://www.adsa.co.uk/library.dr/docs.aspx?id=" +
urlArray[i];
//console.log(address + "\n");
sendRequest(address);
}
輸出(74是最後一個元素的數組中的值):
產生此控制檯消息urlArray.length
倍:
Failed to load: https://www.adsa.co.uk/library.dr/docs.aspx?id=74
任何想法爲什麼sendRequest()不會爲每個數組元素髮送?
這個小提琴:https://jsfiddle.net/y8k9wmkh/似乎工作正常。你可以改變它來顯示你的問題 –
謝謝@ChrisCharles,我正在使用'Repl.it'進行測試。在jsfiddle和jsbin中執行腳本按預期工作。 'Repl.it'似乎在循環的最後一次迭代中調用sendRequest。 – ethane