In my Controller
:
function login(credentials) {
AuthService
.login(credentials)
.then(successCallback, errorCallback);
//same issue with .then(successCallback).catch(errorCallback);
}
function successCallback() {
// do something after success
}
function errorCallback(data) {
// do something after error
}
and in my AuthService
:
authService.login = function (credentials) {
return $http
.post(ENV.apiEndpoint + 'api/v1/login_check', credentials)
.then(
function (result) {
Session.create(result.data.token, result.data.data);
},
function (data) {
Messages.create('Login failed: ' + data.statusText);
}
);
}
When my POST
delivers a 200 response code, everything works as expected do something after success
is executed.
But when my POST results e.g. in a 401 I can see that Messages.create is called (so in this case it enters the error
path), but unfortunately my Controller calls the successCallback
and not the errorCallback
.
I had to migrate this because I was using the deprecated and since Angular 1.6 removed .success
and .error
promise attributes. It was working back then, but after migration this doesn't work anymore.
What am I doing wrong here?
You may reject the promise in your error callback.
From Angular $q doc: