0
我们有以下服务:资源的呼叫不可达资源冻结UI
app.factory('myService', function($resource) {
return $resource("resources/myServiceUri", {param1: "foo"}, {
get: {method: "GET", isArray: true}
});
});
在页面加载我们的应用程序调用这样的服务:
myService.get({},function(result) {
model.myServicesModel = result;
console.log("if there are network problems the control goes here");
});
这工作完全在后台运行,并连接没问题。但如果由于某种原因或其他后台服务无法连接到数据库,它使用的资源调用将返回错误代码为500的响应。这仍然可以,但似乎此服务调用会返回大量资源对象,每个资源对象都包含一个字符来自后台服务抛出的异常。如你所见,我们根本没有使用错误回调,但是即使我们做了这个控制,当这个问题发生时,它仍然会成功回调。
有没有很好的方法来处理这个问题?我们能否以某种方式绕过以错误代码500返回的响应?
问题可能会通过创建一个'preresource call'来解决,该'preresource call'只会为这个相同的调用返回http标头,但是有更好的解决方案吗?
添加错误回调在这里没有帮助,因为它不会被调用。此外,类型为GET的资源调用的成功回调默认情况下不会返回状态代码。我确实编辑了angular-resource.js并添加了状态码,但在这种情况下知道它并没有帮助,因为当控件进入成功回调时浏览器已经冻结。 – 2013-04-25 10:21:04
并且问题不是将结果设置为我的模型 - 当错误REST结果被提取时会造成损坏。另外需要注意的是,angularjs似乎将后台服务抛出的异常中的每个字母都视为独立的json结果对象。我认为这个问题应该通过在后台添加更多的catch子句来解决,并返回一个带有错误信息的JSON对象给REST服务 – 2013-04-25 10:48:06