2017-12-27 404 views
1

我們有一個通用的HTTP服務來包裝一些HTTP行爲。出現錯誤時,我們將該錯誤添加到BehaviorSubject。沒有訂閱時的默認操作?

我想知道是否有辦法以某種方式......僅當沒有訂閱主題時才顯示此錯誤。

return this.$http.get(url, jsonData).map((res) => res.json().response_data) 
    .catch((err) => { 
    this._errors.next(err); 
}); 

基本上試圖實現HTTP錯誤的「最終」處理,如果沒有其他處理它。

+0

你可以傳遞給'this._errors.next'一個對象,它的'handles'標誌最初設置爲'false'。如果合適,用戶應該將此標誌設置爲「真」。如果在調用'next'後仍然是'false',你可以顯示默認的錯誤信息。這對你有用嗎? – ConnorsFan

+0

這是一個簡單的想法。我會給你一個鏡頭。 – Charlie

回答

1

您可以將一個帶有handled標誌的對象傳遞給訂閱者,處理該錯誤後應將該標誌設置爲true。它的標誌沒有設置後,用戶已收到通知,顯示默認錯誤信息。

export class ErrorHandling { 
    public handled: boolean = false; 
    constructor(public error: any) { 
    } 
} 

return this.$http.get(url, jsonData).map((res) => res.json().response_data) 
    .catch((err) => { 
    let errorHandling = new ErrorHandling(err); 
    this._errors.next(errorHandling); 
    if (!errorHandling.handled) { 
     // The error was not handled, show default message 
     ... 
    } 
}); 
+0

這個想法很好。很簡單。哈哈。 – Charlie