Angularjs 雷斯坦格拉。捕获来自请求拦截器的响应

Angularjs 雷斯坦格拉。捕获来自请求拦截器的响应,angularjs,restangular,Angularjs,Restangular,我需要为每个重新启动的请求设置超时,并在收到成功响应时取消它。问题是如何在请求拦截器中访问响应 我是如何解决的: 服务: angular.module('mmn') .factory('serverTimeout', function($timeout, $rootScope) { var serverTimeout = { request: function(config) { config.timeout = $timeout(function()

我需要为每个重新启动的请求设置超时,并在收到成功响应时取消它。问题是如何在请求拦截器中访问响应

我是如何解决的:

服务:

angular.module('mmn')
  .factory('serverTimeout', function($timeout, $rootScope) {

    var serverTimeout = {
      request: function(config) {
        config.timeout = $timeout(function() {
          $rootScope.$broadcast('event:serverTimeout');
        }, 30000);

        return config;
      },
      response: function(response) {
        $timeout.cancel(response.config.timeout);
        return response;
      }
    };
    return serverTimeout;
  });
App.config:

$httpProvider.interceptors.push('serverTimeout');
App.run:

  //watch serverTimeout event
  $rootScope.$on('event:serverTimeout', function(){
    //your handler here
  });