I'm currently working on an application based on node.js, the server side seems to be running properly but I'm having hard times with the public side.
I'm trying to use a promise with AngularJS in a controller. Here's my code :
var userId;
var userEmail = "somethingICanRecognizeInCaseItDoesntChange";
function getUserInfos(){
var deferred = $q.defer();
if(SessionStorageService.get('token')){
Auth.isAlive().success(function(user){
$scope.user = user;
console.log("user :", user);
console.log("user email :", user.email);
deferred.resolve(user.email);
});
}
else {
$scope.user = {};
deferred.resolve([]);
}
return deferred.promise;
}
userEmail = getUserInfos();
console.log("result :", userEmail);
I thought that result in console would be the same as user email, but it's not.
Here's the console log :
result : Object { $$state: Object }
user : Object { firstName: "super", lastName: "admin", email: "a", isSuperAdmin: true, _ts: "2016-05-03T11:17:06.943Z" } website-ranking.js:41:21
user email : a
Here's a screenshot of what I get by clicking on Object in my browser console : 
The problem is, whatever I try, I never have a as result. I tried things like getUserInfos().$$state, getUserInfos().$$state.value, getUserInfos().$$state.Object, getUserInfos().Object, getUserInfos().Object.value and none of these worked.
What do I miss here ? Am I using promise in a wrong way ? Am I forgetting something ?
Please don't hesitate to tell me if this question can be improved, I'll gladly add code, or any informations you may need to help me solve my problem.
Edit : the thing is, I already used most of the code elsewhere, it's only since I added promise that I'm a bit lost. Here for example, I use the Auth.isAlive() without any problem :
function getUserInfos(cb){
if(SessionStorageService.get('token')){
Auth.isAlive().success(function(user){
$scope.user = user;
cb();
});
}
else {
$scope.user = {};
cb();
}
}
The $scope.user is modified and usable further in the application with no issue.
As the question has been tagged as possible duplicate, I'd like to explain a bite more : I know why I'm using a promise, and I think I understood the differents issues with async in javascript. Here my problem is that my code doesn't work and I can't understand why, though I already successfully used promises in the past. I'm not asking how to get a response from async call, but a little help understand where I went wrong while writting code. If you still think that's a duplicate, let me know in comments and I'll deal with it, it's possible that I missed something in the link provided.
getUserInfos().then(function (email) { ... });.