javascript - 多个get请求jquery

标签 javascript jquery ajax arrays get

我正在尝试将几个 url 作为文本读取并使用 jquery 的 ajax/get 将它们存储到一个数组中。我需要等待获取所有数据(并推送到数组),然后在函数中返回它。根据我在网上阅读的内容,这是不可能的。

我想如果我设置一个全局数组变量并在每次获取新数据时将其插入该变量,然后在返回时使用 while 循环检查数组是否饱和。见下文

您可以假设所有错误都在 get 调用中处理

function fetchData(){
   x = [1,2,3,4,5,6,7,8,9,10];
   a = [];

   //Loop, get and push data
   $.each(x, function( i, val ) {
       $.get("http://someurl/"+i, function( data ) {
           a.push(data);
       });
   });

   // Wait till our array is populated?
   while(a.length < x.length){
       console.log(a.length);
   }
   return a;
}

然而,这种方法似乎并没有奏效,并且没有任何东西被添加到数组中。 有人可以指出我正确的方向吗?

谢谢

最佳答案

您正在寻找的解决方案是使用回调

function fetchData(callback) {
    var requests = [];
    for (var i = 1; i <= 10; i++) {
        requests.push($.get("http://someurl/" + i))
    }

    $.when.apply($, requests).then(function () {
        var array = $.map(arguments, function (arg) {
            return arg[0];
        });
        callback(array);
    })
}

fetchData(function (array) {
    //do something with array
})

概念验证:Fiddle

关于javascript - 多个get请求jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20112243/

相关文章:

javascript - 使用目标 ="_blank"提交的表单在 ajax 请求之后打开一个弹出窗口而不是新选项卡

javascript - 如何仅在满足条件时将数组元素复制到电子表格

javascript - 使用 AJAX 从函数返回值

ajax - 处理Chrome + Backbone中的网络错误

javascript - 多次动态内容和加载 JQuery 脚本

jquery - 获取最后一个 DIV 段落内容

javascript - jQuery:如何识别 ID 包含点的元素?

javascript - 比较两种 JavaScript 对象算法

javascript - 默认水平滚动的表格

Javascript 扩展文本淡入