对无法访问的资源的资源调用冻结了UI

时间:2013-04-24 07:57:48

标签: angularjs

我们提供以下服务:

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的响应吗?

问题可以通过进行“预资源调用”来解决,该调用仅返回同一调用的http标头,但有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我不确定它是否是正确的解决方案,但添加空错误回调应该可以解决问题。

myService.get({},function(result) {
  model.myServicesModel = result;
  console.log("if there are network problems the control goes here");
}, function() {
  //error
});

使用此回调,您的结果将不会分配给您的模型。如果将参数添加到回调函数,您还可以知道错误状态和标题,并向用户显示有关错误的有用信息。