如何异步调用3组2个链式$ http.get请求

时间:2018-01-30 14:41:37

标签: angularjs

亲爱的Stackoverflow的成员,

我需要异步调用3组2个链式$ http.get请求。 对于每组链式请求,我需要获取属性的id然后执行第二个$ http.get请求以从id获取数据。 完成所有组请求后,我需要解析所有获取的数据。 以下是我开发的功能。

function initChartData(starttime, endtime) {
    var deferred = $q.defer();

    var attrURLs = [baseURL + '|Attribute1',
        baseURL + '|Attribute2',
        baseURL + '|Attribute3'
    ];

    var promises = [];
    var attrNames = [];
    var dateFormat = 'dd-MMM-yyyy HH:mm';

    angular.forEach(attrURLs, function (url) {
        promises.push(
            // 1. First $http.get request: Get the ID of the attribute
            $http.get(url)
                .then(function (responses) {
                    // 2. Second $http.get request: Get the data from the ID
                    var data = responses.data;                        
                    return $http.get(data.Links.GetData + '?starttime=' + $filter('date')(starttime, dateFormat) + '&endtime=' + sEndTime);
                })
            );
    });

    $q.all(promises)
        .then(function (responses) {
            var data = [];
            for (let i = 0; i < responses.length; i++) {
                data.push(responses[i].data.data });
            }
            deferred.resolve(data);
        });

    return deferred.promise;
}

您如何看待我的功能? 2个链式$ http.get请求中的3组是异步调用的吗?或者,当所有第一个$ http.get请求完成后,是否调用了第二个$ http.get请求?

谢谢, 最好的祝福, 艾蒂安

0 个答案:

没有答案