使用失败回调

时间:2015-09-11 12:39:26

标签: angularjs angular-resource

我正在尝试重试由于超时或其他原因而失败的请求。我想在失败回调中做这个,而不必使用任何拦截器。这可能吗?

$resource(url, {}, {get: {method: "GET"}}).get()
                        .$promise.then(function (res) {
                           //Success callback
                        }, function (err) {
                           //Failure callback 
                           //Retry the same request here!!
                        });

1 个答案:

答案 0 :(得分:0)

您可以定义HttpInterceptor并从$resource上的transformResponse钩子中使用它:

/* First, define the Interceptor */
angular.module('MyModule').factory('MyInterceptor', ['$injector', function ($injector) {
  return {
    responseError: function(res) {
      return $injector.get('$http')(res.config); /* Try again. Inject dependency here to avoid circular dependency for $http */
    }
  }
}])
/* Then use define the resource */
const MyModel = $resource(url, {}, {
  get: {
    method: "GET",
    transformResponse: [null, MyInterceptor], /* trigger on error only */
  }
});