【发布时间】:2017-02-22 12:48:00
【问题描述】:
在我的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 路径),但不幸的是我的控制器调用了successCallback 而不是errorCallback。
我必须迁移它,因为我使用的是已弃用的,并且 Angular 1.6 删除了 .success 和 .error 承诺属性。它当时可以工作,但迁移后它不再工作了。
我在这里做错了什么?
【问题讨论】:
-
你需要从
Messages.create('Login failed: ' + data.statusText);块中抛出 -
angulra 不喜欢投掷,返回
$q.reject()更好
标签: javascript angularjs promise angularjs-1.6