javascript - How to call deferred promise? -


this code

    $scope.login = function(){         $http.post(url+'auth/login', {email:'dummy@gmail.com', password:'password'}).then(function(r){             locker.put('token', r.data.token);              console.log(locker.get('token'));         });     };       $scope.one = function(){         ingredientservice.ingredients().then(function (response) {             var data = response.data;             locker.put('token', response.headers('authorization').split(" ")[1]);              console.log(locker.get('token'));         });     };      var deferred = $q.defer();     var promise = deferred.promise;      promise = promise.then($scope.login()).then($scope.one()); 

i want login(), when has finish, want execute one().

but why one() has began run before login() has done?

this made error because one() need token login()

i think login , 1 should never called, because "promise" never resolved.

you should below, please notice $scope.login should return promise , can chained "then".

 $scope.login = function(){         return $http.post(url+'auth/login', {email:'dummy@gmail.com', password:'password'}).then(function(r){             locker.put('token', r.data.token);              console.log(locker.get('token'));         });     };       $scope.one = function(){         ingredientservice.ingredients().then(function (response) {             var data = response.data;             locker.put('token', response.headers('authorization').split(" ")[1]);              console.log(locker.get('token'));         });     };      $scope.login().then($scope.one); 

Comments