AngularJS $ q服务按顺序获得响应

时间:2016-03-15 16:18:24

标签: angularjs http for-loop q angular-promise

我有一个API,我将多个有效负载发布到并按预期从已发布的有效负载获取响应。由于我使用$ q.all,我将所发布的有效负载中的所有数据作为单个承诺,然后我只能在UI中显示它们。由于响应需要相当长的时间,而不是完全显示它,我试图一次获得一个响应数据。我在angular.Foreach内部移动了http调用,希望每个有效负载都能进行调用,但它仍然将所有数据作为单个承诺返回给我。

服务:

function getVarStatData(payload, index, field, stat) {

        var promise = [];

        for (var i = 0; i < field.length; i++) {
            if (field[i]) {

                var varStatData = {
                    user_selection: payload,
                    index_info: index,
                    field: field[i],
                    statistic: stat

                };

               //console.log("stat api payload", varStatData);

                promise.push(postStatData(varStatData));

            }
        }
        return $q.all(promise);

    }

    function postStatData(varStatData){
        var deferred = $q.defer();

        $http({
            url: 'API',
            method: "POST",
            data: $.param(varStatData),
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        }).then(function (response) {
            var varStat = response.data;

            deferred.resolve(varStat);


        });

        return deferred.promise;

    }

控制器:

         arisService.getVarStatData(
                    JSON.stringify(payload),
                    JSON.stringify(config.index_info),
                    statFields,
                    stat
                    )
                    .then(function (data) {

                        $scope.varStat = data;        

                    });

0 个答案:

没有答案