我目前正在编写一个angular应用程序,我正在重构我的代码,审查所有的错误处理。目前我的Angular应用程序使用Parse.com,我必须在应用程序中管理会话令牌。Parse.com特别建议构建一个全局实用程序函数,该函数应被所有Parse请求错误回调调用。我对构建这个全局效用函数很感兴趣,但我不确定它的实现。我想我应该把它写成一个服务,并把它注入到我所有的控制器中进行错误检查。这是Parse.com代码
function handleParseError(err) {
switch (err.code) {
case Parse.Error.INVALID_SESSION_TOKEN:
Parse.User.logOut();
... // If web browser, render a log in screen
... // If Express.js, redirect the user to the log in route
break;
... // Other Parse API errors that you want to explicitly handle
}
}
// For each API request, call the global error handler
query.find().then(function() {
...
}, function(err) {
handleParseError(err);
});
https://www.parse.com/docs/js/guide#sessions-处理无效会话令牌错误
我想我应该写一个实现错误处理功能的服务,比如这个
.service(ParseErrorHandler, function(){
return{
function handleParseError(err) {
switch (err.code) {
case Parse.Error.INVALID_SESSION_TOKEN:
Parse.User.logOut();
$scope.go('app.login');
break;
... // Other Parse API errors that you want to explicit handle
...//List of Parse.com Error Codes to reference at link below
...////http://parse.com/docs/dotnet/api/html/
...//T_Parse_ParseException_ErrorCode.htm
}
}
}
})
然后在我的控制器中,我在必要的地方注入ParseErrorHandler服务,并调用函数的错误处理程序部分中的函数
query.find().then(function() {
...
}, function(err) {
ParseErrorHandler.handleParseError(err);
});
这是从Parse实现这个建议所需要的吗?如果是的话,你也许可以支持我的问题?(不熟悉SO)
服务是在控制器之间共享/持久化数据的正确方式。您提供的代码看起来很可靠。一个建议是你应该把你的代码弄干。我假设你会做很多
function(err) {
ParseErrorHandler.handleParseError(err);
}
你应该把它变成一个函数:
function logError(err) {
ParseErrorHandler.handleParseError(err);
}
这将使您的代码更干净。
query.find().then(function() {
...
}, logError);