我有一个基于组件的Angular应用程序,其中各个组件加载它们各自的数据。发生错误时,我通常希望组件显示错误消息。
但是,在某些情况下,我希望组件忽略错误并将其留给一些全局错误处理机制来捕获它。
拦截:
angular.module("...").factory("httpInterceptor", function($q) {
return {
responseError: function(response) {
// (1)
return $q.reject("I AM CALLED FIRST")
}
})
Serivce:
angular.module("...").service("myService", function($http){
return {
fetchData: function(){
return $http.get("...")
}
}
})
控制器:
angular.module("...").controller("MyController", function(myService){
myService.fetchData()
.then(function(){ ... })
.catch(function() {
// (2)
//I AM CALLED LAST
})
})
在大多数情况下,我想在控制器(处理在点的误差(2) )。如果控制器决定忽略该错误(省略该错误),那么该错误仍然可以在拦截器中被捕获。
问题在于拦截器不知道控制器是否意图捕获错误,因为它在控制器之前被调用。因此,拦截器不知道它是否应该显示错误(我不希望全局和本地错误消息)。
如何捕获控制器忽略的http错误?
以另一种方式提出问题:您如何知道是否没有人处理(捕获)承诺链中的错误? – Johannes