javascript - 多个 XMLHttpRequest JavaScript

标签 javascript

我有以下代码:

for(var i=0;i<searchParamLength;i++)
{
    (function(i){
    url = "https://www.googleapis.com/customsearch/v1?q=" + searchParam[i] + "&cx=005894674626506192190:j1zrf-as6vg&key=AIzaSyCanPMUPsyt3mXQd2GOhMZgD4l472jcDNM&dateRestrict=" + date_length;

        arrXhr[i] = new XMLHttpRequest();

        arrXhr[i].open("GET", url, true);

        arrXhr[i].onreadystatechange = function(){

        var totalResults = 0;

        if (arrXhr[i].readyState === 4 && arrXhr[i].status == 200) 
        {
            totalResults = JSON.parse(arrXhr[i].responseText).searchInformation.totalResults;

            console.log("Variable I: " + i + "Total results:" + totalResults);

            totalResultsArr.push(totalResults);
        }           

        };

        arrXhr[i].send(null);

        })(i);

 }

看看我的循环内部,其中有一个 console.log()。我在代码中遇到了一些奇怪的行为,这就是为什么我决定检查循环是否按预期运行。确实,看看下面的图片。循环以一种奇怪的方式执行。首先执行 i=1,然后 i=6,然后 i=2,依此类推。

我一直在研究SO,我看到了以下内容question但这并没有帮助我解决我的问题。有人知道为什么会发生这种情况吗?

enter image description here

最佳答案

请求是异步的。无法保证它们会按照您创建的顺序完成 - 这就是为什么您在回调中看不到 i 的连续值。

关于javascript - 多个 XMLHttpRequest JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34998449/

相关文章:

javascript - 二维中点绕原点的旋转收敛到 0

javascript - nvd3 调整线加条形图的大小

java - 如何使用 javascript 在 IE10 中获取已安装的 JRE/Java 版本

javascript - F8 键可以在我的应用程序中的 javascript 和 windowForm 中使用吗?

javascript - Jquery将表格导出到csv隐藏表格单元格

javascript - firefox 窗口 innerheight 在缩放时不更新

javascript - JCarousel显示问题

javascript - mockserver-grunt 错误产生 java ENOENT

javascript - 如何测试该方法是否已在 Jasmine 中调用?

php - 如何拒绝/阻止用户在浏览器的新选项卡中打开我网站中的链接?