在我的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
}
并在我的
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);
}
);
}
当我的
POST
传递200响应代码时,一切按预期的方式运行do something after success
被执行。但是当我的POST结果例如在401中,我可以看到Messages.create被调用(因此在这种情况下,它进入
error
路径),但是不幸的是,我的 Controller 调用了successCallback
而不是errorCallback
。我必须迁移它,因为我正在使用不推荐使用的功能,并且因为Angular 1.6删除了
.success
和.error
Promise属性。当时可以正常工作,但是在迁移之后,它不再起作用。我在这里做错了什么?
最佳答案
您可以在错误回调中拒绝 promise 。
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);
return $q.reject(data);
}
);
}
从Angular $q doc:
关于javascript - 如何在AngularJS中定义错误回调?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42391944/