我正在尝试将几个 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/