【发布时间】:2017-05-25 01:09:30
【问题描述】:
我在一个数组上循环并对一个 api 进行异步调用返回的数据需要我与另一个数组合并当合并发生时所面临的问题某些承诺尚未解决,因此合并后的结果数组缺少数据。任何想法如何去做。 (我是 Angular 的新手)。 正在循环的数组至少有 200 个元素(我事先不知道数组的大小)我从每个元素中获取 id 并调用此服务:
for (i = 0; i < list.length; i++) {
service.getRawHtml(list[i].service_object_id)
.then(function(res){
temp=htmlToArray(res);
htmlDataList.push(temp);
}, function(err){
// error
})
}
service.getRawHtml=function (id){
var defer = $q.defer();
$http({
method: 'GET',
url: 'http://wlhost:50000/'+id
}).success(function (response) {
defer.resolve(response);
}).error(function (data, status) {
console.log("Failure");
defer.reject(err);
});
return defer.promise;
}
提前致谢。
【问题讨论】:
-
我在回答我的问题之前查看了问题,为我的问题提出的答案是类似的方法。但这与我面临的情况不同:)
-
您的代码没有任何循环..?如果不是“您面临的相同场景”,也许您应该包含更多代码来说明您实际遇到的问题。
-
它是该问题的重复,但我现在已经添加了我自己的答案,其中我还包括了一个修复所谓的deferred anti-pattern 你已经已实施。
-
不客气!为了将来参考,最好包含太多代码而不是太少! ;)