2016-07-21 6 views
0

Ich möchte, dass dies ein Versprechen, hier ist es der Fall, aber es ist der $ http Erfolg Versprechen. Wie kann ich eine Zusage zurückgeben, wenn die Änderungen innerhalb der then() abgeschlossen sind?

+0

'initUserProfile' schon wieder ein Versprechen. Also, was ist dein Problem? – dfsq

+0

Sie haben ein 'in dieser Zeile vergessen: return $ http.get (****' *** myapi/user/profil '). – 01axel01christian

+0

Wie auch immer, Rückkehr aus dem Block dann, wenn Sie Versprechen versprechen wollen. – dfsq

Antwort

2

Sind gerade current_user in then() und es wird als Argument der nächsten then() in der Kette

initUserProfile: function() { 

    return $http.get('myapi/user/profil'). 
    then(function(response) { 
    current_user = response.data; 
    if (current_user.profilpicture) { 
     current_user.profilpicture = $rootScope.baseURL + "/images/users/" + current_user.username + "/" + current_user.profilpicture; 
    } 

    return current_user; 


    }).catch(function(err) { 
    // log error 
    }); 
}; 

In Controller verfügbar sein:

myService.initUserProfile().then(function(current_user){ 
    $scope.user = current_user; 
}) 
0
initUserProfile: function() 
    { 

    var defer=$q.defer(); 

    $http.get('myapi/user/profil'). 
      then(function (response) { 
      current_user = response.data; 
        if (current_user.profilpicture) 
        { 
         current_user.profilpicture = $rootScope.baseURL + "/images/students/" + current_user.username + "/" + current_user.profilpicture; 

        //here resolve 
        defer.resolve(); 

        }else{ 
        defer.reject(); 
        } 


       }, function (err) { 
        // log error 
        defer.reject(); 
       }); 


    //retun promise 
    return defer.promise; 
    }; 
+1

Dies ist ein Anti-Muster ... keine Notwendigkeit für $ q hier – charlietfl

+0

Frage ist, wie Versprechen zurückzugeben, wenn der Code dann abgeschlossen ist - so ist dies die Antwort. Warum Anti-Muster, wenn wir nach einigen asynchronen Code Methode gelöst werden müssen. –

+1

weil '$ http' bereits ein Versprechen zurückgibt ... http://stackoverflow.com/questions/23803743/what-is-the-explicit-promise-construction-antipattern-and-how-do-i-avoid-it – charlietfl

Verwandte Themen