所以我有这个功能,我需要结合多个承诺响应,但一些阅读后,我意识到承诺是异步,所以在这种情况下,我的循环将完成之前所有的答复做。我应该在这种情况下需要使用$ q.all这样的东西吗?我该如何改进这段代码?谢谢..循环完成之前所有的承诺响应做
$scope.messages = [];
function getPastMessages(data) {
angular.forEach(data, function(item) {
Message.get(item.id).then(function(msg) {
if (msg.data.is_private === false) {
User.getPictures(msg.data.user.id).then(function(pics) {
msg.data.user.pictures = pics.data;
});
} else {
User.get(msg.data.im.sender).then(function(sender) {
msg.data.im.sender = sender.data;
User.get(msg.data.im.reciever).then(function(reciever) {
msg.data.im.reciever = reciever.data;
});
});
}
console.log(msg.data); // SHOW 4 OBJECTS CORRECT
$scope.messages.push(msg.data);
console.log($scope.messages); // SHOW ARRAY OF 6 OBJECTS ????????
})
});
};
这工作得很好!谢谢! –