所以我有這個功能,我需要結合多個承諾響應,但一些閱讀後,我意識到承諾是異步,所以在這種情況下,我的循環將完成之前所有的答覆做。我應該在這種情況下需要使用$ 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 ????????
})
});
};
這工作得很好!謝謝! –