我的服务中有一部分代码可以检查HTTP请求中的错误请求并向用户发送警报。此外,如果请求成功,我还会收到另一条消息。但是,我的问题是,如果出现错误,则会引发这两条消息。
这是我的服务:
5
这是我的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 } );
}
}
上添加一个例外,只有在我没有任何错误时才能执行。但我无法使其发挥作用。
答案 0 :(得分:0)
do
。将{{1}}替换为{{1}}。捕获异常时不执行do