gpt4 book ai didi

javascript - AngularJS Promise 错误捕获

转载 作者:行者123 更新时间:2023-11-30 10:09:49 25 4
gpt4 key购买 nike

有如下代码:

 angular.module('app.services', []).factory('authService', [
'SIGN_IN_ENDPOINT', 'SIGN_OUT_ENDPOINT', '$http', '$cookieStore', function(SIGN_IN_ENDPOINT, SIGN_OUT_ENDPOINT, $http, $cookieStore) {
var auth;
auth = {};
auth.signIn = function(credentials) {
return $http.post(SIGN_IN_ENDPOINT, {
user: credentials
}).then(function(response, status) {
return $cookieStore.put('user', response.data);
}, function(error) {
return console.log("Incorrect email/password");
});
};
return auth;
}

这是我的身份验证模块。现在我在 Controller 中有以下功能:

angular.module('app.admin.controllers', []).controller('SignInController', [
'$scope', 'authService', '$state', function($scope, authService, $state) {
$scope.buttonText = "Login";
return $scope.login = function() {
$scope.buttonText = "Logging in. . .";
return authService.signIn($scope.credentials).then(function(response, status) {
return $state.go('allPosts');
}, function(err) {
$scope.invalidLogin = true;
return $scope.buttonText = "Login";
});
};
}

问题:如果我输入了错误的电子邮件/密码,我正在等待 2 个错误回调 - 从第一个“然后”到第二个,但我捕获了第一个错误回调(我可以看到控制台日志)和之后它成功回调执行! (返回 $state.go('allPosts'))。为什么?来自服务器的响应是 401 错误。

最佳答案

这样做的原因是,您在“app.services”中捕获了错误并且没有将问题“冒泡”到更高层。

angular.module('app.services', []).factory('authService', [
'SIGN_IN_ENDPOINT', 'SIGN_OUT_ENDPOINT', '$http', '$cookieStore', function(SIGN_IN_ENDPOINT, SIGN_OUT_ENDPOINT, $http, $cookieStore) {
var auth;
auth = {};
auth.signIn = function(credentials) {
return $http.post(SIGN_IN_ENDPOINT, {
user: credentials
}).then(function(response, status) {
return $cookieStore.put('user', response.data);
}, function(error) {
console.log("Incorrect email/password");
return $q.reject(); //here is the important one.
});
};
return auth;
}

或者完全错过错误处理程序。

auth.signIn = function(credentials) {
return $http.post(SIGN_IN_ENDPOINT, {
user: credentials
}).then(function(response, status) {
return $cookieStore.put('user', response.data);
});
};

如果你捕捉到错误并在错误中返回一个值,following promises 不知道发生的错误。

关于javascript - AngularJS Promise 错误捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27121292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com