Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

angular $http / jquery complete equivalent

Is there a way to emulate jquery 'complete' callback with angular $http module? I have some code I would like to execute no matter whether the request succeeded or failed and at the moment I find myself having to write this:

$http.get(someUrl).success(function(){
        successCode();
        completeCode();
    }).error(function(){
        errorCode();
        completeCode();
    })

but I would rather write something like:

$http.get(someUrl).success(function(){
        successCode();
    }).error(function(){
        errorCode();
    }).complete(function(){
        completeCode();
    })

I've tried also using the promise API but I end up having the same problem. Any suggestion?

like image 705
Renaud Avatar asked Aug 09 '13 10:08

Renaud


1 Answers

Update Aug 2014: .always has been renamed .finally in recent versions of Angular. Prefer .finally to .always.

Note that in order to support IE8 you have to call it with bracket notation as ["finally"].


You can use .always in AngularJS

This change is rather new (you could do that in jQuery for a while), you can see the commit here. This requires you to have AngularJS 1.1.5 or higher.

always(callback) – allows you to observe either the fulfillment or rejection of a promise, but to do so without modifying the final value. This is useful to release resources or do some clean-up that needs to be done whether the promise was rejected or resolved. See the full specification for more information.

Fiddle

like image 188
Benjamin Gruenbaum Avatar answered Sep 19 '22 12:09

Benjamin Gruenbaum