我正在尝试重试由于超时或其他原因而失败的请求。我想在失败回调中做这个,而不必使用任何拦截器。这可能吗?
$resource(url, {}, {get: {method: "GET"}}).get()
.$promise.then(function (res) {
//Success callback
}, function (err) {
//Failure callback
//Retry the same request here!!
});
答案 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 */
}
});