Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular $http service- success(), error(), then() methods

Tags:

angularjs

When should I use then() method and what is the difference between then(), success(), error() methods ?

like image 390
Asik Avatar asked Sep 05 '26 06:09

Asik


1 Answers

Other than the success un-wraps the response into four properties in callback, where as then does not. There is subtle difference between the two.

The then function returns a promise that is resolved by the return values for it's success and error callbacks.

The success and error too return a promise but it is always resolved with the return data of $http call itself. This is how the implementation for success in angular source looks like:

  promise.success = function(fn) {
    promise.then(function(response) {
      fn(response.data, response.status, response.headers, config);
    });
    return promise;
  };

To understand how it can affect our implementation, consider an example where we retrieve whether user exists based on email id. The http implementation below tries to retrieve the user based on userid.

$scope.userExists= $http.get('/users?email='[email protected]'')
                        .then(function(response) {
                            if(response.data) return true;  //data is the data returned from server
                            else return false;
                         });

The promise assigned to userExists resolves to either true or false;

Whereas if we use success

$scope.userExists= $http.get('/users?email='[email protected]'')
                        .success(function(data) {    //data is the response user data from server.
                            if(data) return true;  // These statements have no affect.
                            else return false;
                         });

The promise assigned to userExists resolves either a user object or null, because success returns the original $http.get promise.

Bottom line is use then if you want to do some type of promise chaining.

like image 190
Chandermani Avatar answered Sep 08 '26 11:09

Chandermani



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!