2017-12-27 5 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

'processed._errors.next'に' handles'フラグが最初に 'false'に設定されたオブジェクトを渡すことができます。適切な場合、加入者はこのフラグを 'true'に設定する必要があります。 '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

関連する問題