我有一個基於組件的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