我正在尝试创建一个通用服务来从服务器获取一些设置。当发生错误时,我想捕获此错误并返回默认值(本地我有一个默认配置,应该在发生错误时使用)。
由于我使用Angular 4.3.6
,我可以使用新的HttpClientModule
。
代码:
/**
* Fetches the map settings
* @returns { Observable<MapConfiguration> }
*/
public getMapConfiguration(): Observable<MapConfiguration> {
return this.http.get<MapConfiguration>(MapService.MAPSETTINGSURL)
.catch((exception) => {
console.warn('Could not fetch map configuration due to: ', exception);
return new MapConfiguration();
});
}
此代码出现以下错误:
Type 'MapConfiguration' is not assignable to type 'ObservableInput<{}>'.
我是Observables的新手(曾经承诺过)并承诺我可以在catch中返回一个值。如何解决此问题,以便始终返回值?
我想让服务处理错误,而不是subscriber
答案 0 :(得分:3)
为了始终具有返回值,您可以在catch中使用return Observable.of(new MapConfiguration());
将其包装为可观察的。
答案 1 :(得分:0)
return Observable.of(new MapConfiguration());
将您的对象作为消息生成错误
return Observable.throw(new MapConfiguration());