我使用Angularjs $q.all(promises)
进行多次REST调用,然后在promise成功后收集数据。我有以下内容。
如果" promises是简单数组,那么它就可以Plunker
var promises = [
Users.query().$promise,
Repositories.query().$promise
];
如果"承诺"是简单的对象,然后它也有效Plunker
var promises = {
users: Users.query().$promise,
repos: Repositories.query().$promise
};
如果"承诺"是嵌套对象然后它不起作用。对于我的要求,我需要嵌套对象来记住输入参数。 Plunker
var promises = {
users: {"phx":Users.query().$promise},
repos: {"phx":Repositories.query().$promise}
};
这些plunkr只是为了模拟我的问题。但是我想在实际项目中采用这种方法来满足以下要求。
我有12个产品的清单
每个产品都有"详细信息","好处"和"提供"数据
- 我为"详细信息","好处"提供了单独的REST API服务。和"提供"拥有:productID作为参数
- 醇>
我按照以下顺序拨打电话
一个。每张卡的循环
湾对于每张卡,请为"详细信息","好处"进行REST API调用。和"提供"
℃。将#b步骤添加到" promises"对象
d。调用
$q.all(promises).then(function(results) { // Here need logic to compile the result back to product // and corresponding "details", "benefits" and "offers" mapping }
并获取数据
以下是json结构,我需要收集我的回复。
{
"prod1": {
"benefits": {},
"offers": {},
"pages": {
"productPage": {}
}
}
},
"common": {
"benefits": {},
"pages": {
"commonBenefit": {}
},
"others": {}
}
我怎样才能做到这一点?
答案 0 :(得分:2)
如果你确实需要它,你可以用$q.all
包裹这样的巢:
var promises = {
users: $q.all({"phx": Users.query().$promise}),
repos: $q.all({"phx": Repositories.query().$promise})
};