Javascript AJAX onreadystatechange函数并不总是被调用

Javascript AJAX onreadystatechange函数并不总是被调用,javascript,ajax,xml,readystate,onreadystatechange,Javascript,Ajax,Xml,Readystate,Onreadystatechange,我有一个AJAX调用,使用下面的方法检索一些XML。通常,当我运行代码时,直到foreach循环的最后一次迭代,它才进入onreadystatechange函数。我假设这是因为对“www.webpage.com/”+arrayValue的调用需要足够的时间才能将状态更新为“Ready”,然后再执行下一个请求。该方法可能只在循环的最后一次迭代中运行,因为没有其他请求覆盖它,因此有时间“准备就绪”。从我在网上看到的情况来看,在javascipt或AJAX中,您不能真正使用传统的Wait()语句来为调

我有一个AJAX调用,使用下面的方法检索一些XML。通常,当我运行代码时,直到foreach循环的最后一次迭代,它才进入
onreadystatechange
函数。我假设这是因为对
“www.webpage.com/”+arrayValue
的调用需要足够的时间才能将状态更新为“Ready”,然后再执行下一个请求。该方法可能只在循环的最后一次迭代中运行,因为没有其他请求覆盖它,因此有时间“准备就绪”。从我在网上看到的情况来看,在javascipt或AJAX中,您不能真正使用传统的Wait()语句来为调用提供完成时间。那么我如何克服这个问题呢

var getXML = new XMLHttpRequest();

myArray.forEach((arrayValue, index) => {
    getXML.open("GET", "www.webpage.com/" + arrayValue, true);
    getXML.setRequestHeader('Access-Control-Allow-Credentials', true);
    getXML.setRequestHeader('Authorization', "Basic " + btoa(":something"));
    getXML.send(null);
    getXML.onreadystatechange = function () {
        if(this.readyState == this.DONE) {
             Console.Log("We made it in!");
        }
    }
});

这里的问题是,您试图对多个请求使用相同的XMLHttpRequest对象

不要那样做。为每个请求创建一个新的、干净的XMLHttpRequest实例

myArray.forEach((arrayValue, index) => {
    var getXML = new XMLHttpRequest();
    getXML.open("GET", "www.webpage.com/" + arrayValue, true);

正是我要写的。从Mozilla WebAPI--“注意:为已激活的请求(已调用open()的请求)调用此方法等同于调用abort()