Im building a response back from the server using angular in order to show private messages. So far i have this code which works fine but it doesnt look like using promises the correct way, specially for handling errors. Im wondering how im suppose to handle nested promises in a case like this using best practices?
function listenMessageSend(data) {
var imData = {
message: data.data.id,
sender: currentUser().id,
reciever: $scope.reciever
}
Im.create(imData).then(function(im) {
Message.update(im.data.message, {im: im.data.id}).then(function(msg) {
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;
});
});
if (msg.data.im.sender === currentUser().id || msg.data.im.reciever === currentUser().id) {
$scope.messages.push(msg.data);
}
})
});
};
ifcondition is evaluated before.senderand.receiverare set in the promise callbacks!ifcondition, as ifUser.getis only executed later. Not sure whether you wanted that. You should consider moving the if-statement before theUser.get(…)call so that it gets clear.