Angular 在 for 循环中承诺
Angular promise in a for loop
我有一个这样的对象数组:
var myArray = [{post:{message:"hi",user:"joe"}},{post:{message:"how are you",user:"bob"}}];
其中 myArray[0].post.user = "joe"
和 myArray[1].post.user = "bob"
我想添加另一个键(即 comment
)到 post
基于在遍历数组时使用 $resource 的异步调用动态添加。
远程 Comments
服务运行良好,如下所示:
.factory('Comments',function($resource, myUrl) {
var comments = $resource(myUrl + 'api/comments/:postId', {postId: '@id'});
return comments;
})
在我的控制器中
var myArray = [{post:{message:"hi",user:"joe"}},{post:{message:"how are you",user:"bob"}}];
var messageCount = myArray.length;
var post_id = 1; //comes from elsewhere
for (var c = 0; c < messageCount; c++) {
Comments.get({postId:post_id}).$promise.then(function(comments) {
console.log(comments); // <<---- objects appear to be fine in the console log
myArray[c].post.comments = comments; // <---- throws undefined error
});
}
为什么 myArray.post.comments = comments
抛出错误 Cannot set property 'user' of undefined
??
我猜你的问题与 C 变量有关:当调用 "then" 函数时,你的 C 变量(在你的 for 循环中共享)可能已经消失 "onward"。
转发我的评论作为回答
我有一个这样的对象数组:
var myArray = [{post:{message:"hi",user:"joe"}},{post:{message:"how are you",user:"bob"}}];
其中 myArray[0].post.user = "joe"
和 myArray[1].post.user = "bob"
我想添加另一个键(即 comment
)到 post
基于在遍历数组时使用 $resource 的异步调用动态添加。
远程 Comments
服务运行良好,如下所示:
.factory('Comments',function($resource, myUrl) {
var comments = $resource(myUrl + 'api/comments/:postId', {postId: '@id'});
return comments;
})
在我的控制器中
var myArray = [{post:{message:"hi",user:"joe"}},{post:{message:"how are you",user:"bob"}}];
var messageCount = myArray.length;
var post_id = 1; //comes from elsewhere
for (var c = 0; c < messageCount; c++) {
Comments.get({postId:post_id}).$promise.then(function(comments) {
console.log(comments); // <<---- objects appear to be fine in the console log
myArray[c].post.comments = comments; // <---- throws undefined error
});
}
为什么 myArray.post.comments = comments
抛出错误 Cannot set property 'user' of undefined
??
我猜你的问题与 C 变量有关:当调用 "then" 函数时,你的 C 变量(在你的 for 循环中共享)可能已经消失 "onward"。
转发我的评论作为回答