2014-02-11 43 views
1

是否可以爲$ http服務實現「responseError」攔截器,只有在給定的http承諾中沒有爲其他地方定義的特定故障處理程序時纔會觸發該攔截器?

爲了防止響應錯誤,下面的表達式$http.get(...).success(...)將在攔截器中執行一些代碼,而下面的一個$http.get(...).success(...).error(...)不會。

回答

1

您可以使用一個裝飾:

app.config(function($provide) { 
    $provide.decorator('$exceptionHandler', function($delegate, $injector) { 
     return function $broadcastingExceptionHandler(ex, cause) { 
      $delegate(ex, cause); 
      $injector.get('$rootScope').$broadcast('exception', ex, cause); 
     } 
    }); 
}); 

本示例將捕獲所有異常,雖然,但你可以檢查錯誤,並妥善處理這個問題。