【发布时间】:2014-02-18 18:09:47
【问题描述】:
问题:
我正在(我认为是但可能不是)对数组执行简单的angular.forEach,然后使用$resource 根据返回的每个值进行调用。正如我所料,每次调用的结果都是一个对象。但是,我无法让这些对象以angular.forEach documentation 演示的方式和谐地结合在一起。
但首先,一些有效的代码,然后看看失败的代码。
作品:
var uniqueIds = {};
angular.forEach(object, function(key, value){
this.push(key.uniqueIds);
}, uniqueIds);
console.log(uniqueIds)
// uniqueIds equals the expected array
失败
这就是事情变得棘手的地方。现在,在下一个示例中,angular.forEach 内部是一个 $resource 调用。
angular.forEach(array, function(index){
Resource.query({id:index}, function(result){
console.log(result)
// returns the expected object,
// but, as expected, I can't access the object outside the async call
});
console.log(result);
// result is undefined
});
鉴于异步性,似乎一个承诺可以解决问题。但它没有——我真的还在异步调用中。将result 分配给$scope 也不起作用。简而言之,我似乎无法获得Resource.query 之外的值。
我需要做什么?
我需要每个$resource 调用的返回对象以与angular.forEach 创建数组相同的方式添加到一个对象(使用angular.extend?我试过了)。我尝试了许多不同的方法,大多数都基于此处提出的一般异步问题的答案,但到目前为止无济于事。我很肯定从$resource 调用中获取值是一个问题,但在这种情况下如何做到这一点我有点困惑。
【问题讨论】:
标签: javascript angularjs object asynchronous foreach