等待所有ajax请求在变量循环中完成

时间:2018-08-31 17:55:50

标签: javascript jquery

因此,我有一个需要查询的变量列表。由于当时在线/离线,列表会更改。我需要将所有节点返回的数据编译到单个数组(日期)中,但是我想显示一个加载元素,直到所有请求完成为止。我试图理解/使用诺言,但是由于我的循环是动态的,因此无法使其符合我的要求。也许我只是不完全了解诺言是否能够实现它们,但我只需要找到一种解决方案。

$(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;
}

0 个答案:

没有答案