How to return a resolved promise from an AngularJS Service using $q? How to return a resolved promise from an AngularJS Service using $q? angularjs angularjs

How to return a resolved promise from an AngularJS Service using $q?


How to simply return a pre-resolved promise in AngularJS

Resolved promise:

return $q.when( someValue );    // angularjs 1.2+return $q.resolve( someValue ); // angularjs 1.4+, alias to `when` to match ES6

Rejected promise:

return $q.reject( someValue );


Return your promise , return deferred.promise.
It is the promise API that has the 'then' method.

https://docs.angularjs.org/api/ng/service/$q

Calling resolve does not return a promise it only signals thepromise that the promise is resolved so it can execute the 'then' logic.

Basic pattern as follows, rinse and repeat
http://plnkr.co/edit/fJmmEP5xOrEMfLvLWy1h?p=preview

<!DOCTYPE html><html><head>  <script data-require="angular.js@*" data-semver="1.3.0-beta.5"         src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script>  <link rel="stylesheet" href="style.css" />  <script src="script.js"></script></head><body><div ng-controller="test">  <button ng-click="test()">test</button></div><script>  var app = angular.module("app",[]);  app.controller("test",function($scope,$q){    $scope.$test = function(){      var deferred = $q.defer();      deferred.resolve("Hi");      return deferred.promise;    };    $scope.test=function(){      $scope.$test()      .then(function(data){        console.log(data);      });    }        });  angular.bootstrap(document,["app"]);</script>


From your service method:

function serviceMethod() {    return $timeout(function() {        return {            property: 'value'        };    }, 1000);}

And in your controller:

serviceName    .serviceMethod()    .then(function(data){        //handle the success condition here        var x = data.property    });