Immediately return a resolved promise using AngularJS Immediately return a resolved promise using AngularJS angularjs angularjs

Immediately return a resolved promise using AngularJS


As your promise use the same syntax as the JavaScript native one, you could use and return an already resolved JavaScript promise : Promise.resolve()

return(Promise.resolve("MyReturnValue"));


The current accepted answer is overly complicated, and abuses the deferred anti pattern. Here is a simpler approach:

this.update = function(data_loaded) {    if (data_loaded) return $q.when(data);  // We've loaded the data, no need to update    return Restangular.all('someBase').customGet('foo/bar')                             .then(function(data) {        // Do something with the data here     });};

Or, even further:

this._updatep = null;this.update = function(data_loaded) { // cached    this._updatep = this._updatep || Restangular.all('someBase') // process in                                                .customGet('foo/bar'); //.then(..    return this._updatep;};


AngularJS's $q service will help you here. It is much like Kris Kowal's Q promise library.

When you have an async method that may return a promise or value use the $q.when method. It will take what ever is passed to it, be it a promise or a value and create a promise that will be resolved/rejected based on the promise passed, or resolved if a value is passed.

$q.when( fooService.update(data_loaded) ).then(function(data){   //data will either be the data returned or the data   //passed through from the promise})

and then in your update function return the data instead of just returning

if (data_loaded) return data_loaded;