The AngularJS documentation has a Deprecation Notice for the $http success and error methods. Is there a specific reason this abstraction was removed from the library?
Solution 1
The problem was that .success and .error methods are not chainable because they ignore return values. This caused problems for people familiar with chaining and encouraged poor code from people unfamiliar with chaining. Witness all the examples on StackOverflow that use the deferred anti-pattern.
To quote one of the AngularJS team:
IMO
.successand.errorwere a bad bit of API design in the first place. This issue highlights a number of situations where developers get confused because they either expect.successand.errorto work the same way as.thenor vice versa. In a perfect world I would rather just ditch these$httpspecific "promises". Instead we could encourage developers to use the standard$qpromise API.thenand.catch. There is very little benefit IMO in working with explicit parameters over working with the response object.AngularJS Issue #10508
$http.success/.errordissimilar from how.thenworks.
Deprecation Notice (v1.5)
The
$httplegacy promise methodssuccessanderrorhave been deprecated. Use the standardthenmethod instead. If$httpProvider.useLegacyPromiseExtensionsis set tofalsethen these methods will throw$http/legacyerror.
UPDATE
The deprecated .success and .error methods have been removed from AngularJS 1.6.
Due to b54a39,
$http's deprecated custom callback methods -.success()and.error()- have been removed. You can use the standard.then()/.catch()promise methods instead, but note that the method signatures and return values are different.$http(...) .then(function onSuccess(response) { // Handle success var data = response.data; var status = response.status; var statusText = response.statusText; var headers = response.headers; var config = response.config; ... }).catch(function onError(response) { // Handle error var data = response.data; var status = response.status; var statusText = response.statusText; var headers = response.headers; var config = response.config; ... });
Solution 2
The pattern that javascript it using related to promises is only with .then(successCallback, errorCallback), so they are probably aiming to use js pattern.
