javascript - angularjs防止错误冒泡到httpinterceptor

标签 javascript angularjs angular-http-interceptors

我的 angularjs 应用程序有一个 http 拦截器,可以捕获任何 http 异常并处理它们。在某些情况下,我想捕获请求中的错误并在那里处理它们,以防止错误冒泡到拦截器。有谁知道这怎么可能? 这是拦截器:

angular.module('x')
    .factory('HttpErrorHandlerFactory', ['$q', '$rootScope', function ($q, $rootScope) {
        return {
            'responseError': function (rejection) {
                if (rejection.status == 0) return $q.reject(rejection);
                if (rejection.data === '')
                    rejection.data = 'Error';
                $rootScope.Message.Value = rejection.data;
                return $q.reject(rejection);
            }
        };
    }]);

这是在应用程序级别设置的,因此通过的任何 http 请求都会被捕获。如果它们出错,它会捕获它们并显示消息。

通常,我们有这样的电话:

  someFactory.GetSomething(scope.id)
              .success(function (result) {
                    //do something with result
               }).error(function(error){
                    //MY QUESTION IS, HOW TO GET THIS ERROR TO NOT BUBBBLE UP TO THE INTERCEPTOR
               });

最佳答案

据我所知,您无法真正阻止拦截器在调用者函数之前捕获错误。确实这很烦人。

我的解决方案是向特定的 http 请求添加一个配置对象(我想要处理来自调用者的错误)。

例如使用 reangular 时:

  myRestangularObject.get().withHttpConfig({handleByCaller: true})

在我的拦截器上:

  if (rejection.config.handleByCaller && rejection.config.handleByCaller === true) {
     return $q.reject(rejection);
  }

我知道这是一个黑客行为,并不能回答你的问题,但正如我所说,我认为你无法避免首先执行拦截器。

关于javascript - angularjs防止错误冒泡到httpinterceptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37889841/

相关文章:

asp.net mvc 使用 html5mode 和路由托管 Angular 应用程序

http - CORS Angular 2拦截器

javascript - Jquery addClass——新类的函数

Javascript 没有改变 CSS 变量

javascript - 匹配字谜并推送到数组

javascript - 弹出时为对话框添加自定义动画

javascript - Angular ng-repeat 多重排序

javascript - 如何更改我的 AngularJS 服务以使用 Typescript?

angularjs - 无法读取 $httpInterceptor 中未定义的属性 'push'