【发布时间】:2016-03-03 18:06:06
【问题描述】:
我正在尝试编写一个函数,该函数根据idArray 中的 Id 数量向服务器发送多个请求。我面临的问题是推入dataArray 的数据没有遵循idArray 的相应ID 的正确顺序。我尝试将timeout 添加到HTTP 请求中,以便在for 循环的下一次迭代之前完全处理上一个请求,但这似乎也不起作用。请帮忙。
function commonService($http, $q) {
return {
getAboutContent: function() {
var dataArray = [];
var deferred = $q.defer();
var idArray = ['about2', 'about3'];
var count = 0;
angular.forEach(idArray, function(id) {
$http.get('server url/' + id).success(function(data) {
dataArray.push(data);
count++;
if (count == idArray.length) {
deferred.resolve(dataArray);
}
}).error(function(error) {
console.log('error', error);
deferred.reject(error);
});
});
return deferred.promise;
}
}
}
【问题讨论】:
-
响应头/正文中是否有一些东西可以用来在返回之前以正确的顺序排列响应?
-
响应在每个对象中都有唯一的标题,但我不确定如何使用它们,因为如果我使用 if(data.title== 'myTitle'){dataArray.push(data )},如果标题与 myTitle 不匹配,它将跳过将数据推送到数组中,因此该迭代将丢失和浪费。
标签: javascript angularjs angularjs-http