我正在处理http错误响应,为此找到了2个解决方案。 1:使用catch()方法2:使用“错误”,我感到困惑的是哪一种是最好且耗时更少的方法。
我的代码如下:
方法1
this.serviceName.methodName().catch(err => {
// Handle error here
console.log("Something went wrong with the request, please try again.");
return Observable.throw(err.message.toUpperCase() || 'API_ERROR');
}).subscribe((res) => {
console.log(res);
});
方法2:
this.serviceName.methodName().subscribe((res) => {
console.log(res);
},
error=>{
console.log(error);
});
请建议哪种方法是不错的选择。感谢您的帮助。谢谢。
答案 0 :(得分:0)
我倾向于您第二个选择,因为它很容易阅读和理解,尽管并非总是如此。
this.serviceName.methodName(...).subscribe((res) =>
{
console.log(res);
},
error =>
{
console.log(error);
});
虽然Error inspection, interpretation, and resolution is something you want to do in the service, not in the component.
是一个很好的做法,但我认为这可能很大程度上取决于您希望如何向用户传递发生错误的消息。
在大型项目中,这可能是特定于组件的,并在组件中执行一系列不同的操作。根据您正在从事的项目,找出最适合您解决此类问题的地方。
来自HTTP调用服务内Angular docs的catchError中的示例。
getHeroes (): Observable<Hero[]> {
return this.http.get<Hero[]>(this.heroesUrl)
.pipe(
catchError(this.handleError<Hero[]>('getHeroes', []))
);
}
这基本上会调用函数this.handleError(..)
,如果有错误,该函数也将在服务中使用;否则,将返回可观察到的服务调用。