Javascript 等待所有ajax请求在变量循环中完成
所以我有一个需要查询的节点变量列表。该列表会根据当时的在线/离线情况进行更改。我需要将所有节点返回的数据编译成单个数组(日期),但我希望在所有请求完成之前显示一个加载元素。我试图理解/使用承诺,但由于我的循环是动态的,所以无法使其符合我的承诺。也许我还没有完全理解承诺,无法实现它们,但我只需要找到一个解决方案Javascript 等待所有ajax请求在变量循环中完成,javascript,jquery,Javascript,Jquery,所以我有一个需要查询的节点变量列表。该列表会根据当时的在线/离线情况进行更改。我需要将所有节点返回的数据编译成单个数组(日期),但我希望在所有请求完成之前显示一个加载元素。我试图理解/使用承诺,但由于我的循环是动态的,所以无法使其符合我的承诺。也许我还没有完全理解承诺,无法实现它们,但我只需要找到一个解决方案 $(document).ready(function(){ dates = []; $('loading').show(); for(let x = 0; x &l
$(document).ready(function(){
dates = [];
$('loading').show();
for(let x = 0; x < node_list.length; x++) {
getDates(node_list[x]);
}
// something here to wait?
$('loading').hide();
$('results').show();
});
function getDates(node) {
var url = 'https://rest.api/' + node;
jQuery.ajax( {
url: url,
method: 'GET',
dataType: 'json',
async: true,
success: function ( data, textStatus, jqXHR ) {
if ( data.length > 0 ) {
dates.push(data);
}
},
error: function ( jqXHR, textStatus, errorThrown ) {
console.log( 'An error has occured! ' + errorThrown );
}
});
return dates;
}
$(文档).ready(函数(){
日期=[];
$('loading').show();
for(设x=0;x
搭配将允许您使用带有数组输入的when()
您知道这种奇妙的方法吗<代码>$(文档).ajaxStop(函数(){//do something})旁注dates
是一个全局变量,因为它的作用域不是var
,所以getDates()
在末尾返回它(并且不使用该返回值)这一事实是一种代码味道。