2017-03-12 10 views
0

私のサービスには、HTTPリクエストの不正なリクエストをチェックし、ユーザにアラートを送信するコードがあります。また、リクエストが成功した場合に発生する別のメッセージがあります。しかし、私の問題は、エラーの場合、両方のメッセージが発生することです。Angular HTTPの不正なリクエストに関するエラーメッセージを表示

これは私のサービスである:

deleteProduct(product:Product) { 
    if (this._loggedInGuard.isLoggedIn()) { 
     let token = localStorage.getItem('token'); 
     let body = JSON.stringify(product); 
     let headers = new Headers(
     { 'Content-Type': 'application/json', 
      "X-HTTP-Method-Override": "DELETE", 
      'Authorization': 'Bearer ' + token}); 
     return this._http 
     .post(this.API + "/products/"+product.id, body, {headers: headers}) 
     .map(res => res.json()) 
     .catch(this._responseService.catchBadResponse) 
     .finally(() => this._responseService.success('Well done')); 
    } 
    } 

そして、これは私のResponseServiceコードです:

@Injectable() 
export class ResponseService { 

    constructor() { } 

    catchBadResponse: (errorResponse: any) => Observable<any> = (errorResponse: any) => { 
    let res = <Response>errorResponse; 
    let err = res.json(); 
    let emsg = err ? 
     (err.error ? err.error : JSON.stringify(err)) : 
     (res.statusText || 'unknown error'); 
     Messenger().post({ message: emsg.message, hideAfter: 10, type: 'error', showCloseButton: false }); 

    return Observable.of(); 
    } 

    success(msg) { 
    Messenger().post({ message: msg, hideAfter: 10, type: 'success', showCloseButton: false }); 
    } 
} 

私は私が私が持っていない場合にのみ実行されるようにfinally()上の例外を追加する必要があると思いますエラー。しかし、私はそれを機能させることができません。

+0

コメントなしで投票を否定しますか?なぜこれが話題にならないのか詳しく教えてください。 – Tasos

答えて

0

Finallyが常に呼び出されます。 finallydoに置き換えてください。例外がキャッチされたときにdoは実行されません。

関連する問題