我有一个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;
});