0

我们有以下服务:

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 标头的“预资源调用”来解决问题,但是有更好的解决方案吗?

4

1 回答 1

0

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

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

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

于 2013-04-25T02:10:11.640 回答