我正在使用提供非嵌套资源API的REST Api。这导致了链接的电话,我想用承诺做。我使用角度的ngResource,我有问题链接调用。这个想法首先得到一个活跃元素的描述。在这里我要求一个JSON,响应如下:
{id : 0, block : [0,3,4]}
获得此信息后,我尝试获取有关块的数据。实现如下:
Element.get({'id':state.elementID}).$promise.then( function(element) {
// Element hast block entry with array of belonging blockIDs
angular.forEach(element.block, function(blockId){
// Get all the Blocks, that have the defined ID ( Foreign key)
return Block.get({'id':blockId}).$promise;
});
}).then(function(block){
// Create an element and ADD it to the model
var uiElem = new UIElem(block.id, "#",block.name, "block");
$scope.list.push(uiElem);
angular.forEach(block.parameter, function(element){
/// Chain other calls...
.......
});
})
第二个然后获得未定义块的问题,尽管GET调用从服务器获得正确的JSON。
我想知道我是否使用了错误的链接或使用错误的元素
答案 0 :(得分:1)
你没有正确地链接你的承诺。对于每个块,您立即向服务器发送另一个请求。
使用$ q.all进行链接:
// Element hast block entry with array of belonging blockIDs
return $q.all(element.block.map(function(blockId){
// Get all the Blocks, that have the defined ID ( Foreign key)
return Block.get({'id':blockId}).$promise;
}));
这应该为您提供结果块数组:
}).then(function(blocks){...
答案 1 :(得分:0)