小编Kri*_*n S的帖子

在本地处理Angular $ http错误,并回退到全局错误处理

我有一个基于组件的Angular应用程序,其中各个组件加载它们各自的数据.发生错误时,我通常希望组件显示错误消息.

但是,在某些情况下,我希望组件忽略错误,并将其留给一些全局错误处理机制来捕获它.

拦截器:

angular.module("...").factory("httpInterceptor", function($q) {
    return {
        responseError: function(response) {
            // (1)
            return $q.reject("I AM CALLED FIRST") 
        }
})
Run Code Online (Sandbox Code Playgroud)

Serivce:

angular.module("...").service("myService", function($http){
    return {
        fetchData: function(){
            return $http.get("...")    
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

控制器:

angular.module("...").controller("MyController", function(myService){
    myService.fetchData()
        .then(function(){ ... })
        .catch(function() { 
           // (2) 
           //I AM CALLED LAST
        })
})
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,我希望在控制器中处理错误(在第(2)点).如果控制器决定忽略错误(省略catch),则仍然可以在拦截器中捕获错误.

问题是拦截器不知道控制器是否打算捕获错误,因为它是在控制器之前调用的.因此拦截器不知道它是否应该显示错误(我不想要全局和本地错误消息).

如何捕获控制器忽略的http错误?

error-handling angularjs angular-http

4
推荐指数
1
解决办法
2573
查看次数

标签 统计

angular-http ×1

angularjs ×1

error-handling ×1