使用AngularJS中的$ resource和$ http管理全局错误

时间:2014-02-06 14:39:07

标签: javascript angularjs

我一直在寻找一种管理我在角度应用程序中可以拥有的http错误的方法。我一直在分别捕捉它们,但我想在全球范围内管理它们。我使用$ resource和$ http作为我的http调用。有没有办法在全球范围内管理它们?

2 个答案:

答案 0 :(得分:3)

尝试$http interceptor

引自文档:

angular.module('app',[]).config(function($httpProvider){

    $httpProvider.interceptors.push(function($q, dependency1, dependency2) {
      return {
       'request': function(config) {
           return config;
        },

       'response': function(response) {
           // do something on success
           return response || $q.when(response);
        },
        'responseError': function(rejection) {
         // do something on error

           return $q.reject(rejection);
         }
      };
    });
});

答案 1 :(得分:0)

您可以捕获全局错误:

angular.module('app').factory('Interceptor',function($q) {

    'use strict';


    function success(response) {

      return response;
    }

    function error(response) {

      if (response.status === 401) {
        var deferred = $q.defer();
        // here you can broadcast or do anything you want 
        return deferred.promise;
      }
      // otherwise
      return $q.reject(response);
    }

    return function (promise) {

       return promise.then(success, error);
    };
});



angular.module('app').config(function($urlRouterProvider, $locationProvider, $stateProvider, $httpProvider) {
    $httpProvider.responseInterceptors.push('Interceptor');
});