我有rest api,它会返回带有数据的json数组。在客户端,我使用此代码从请求创建对象。
public getNews(): Observable<News[]> {
return this.http.get(this.baseUrl + '/news')
.pipe(
catchError(this.handleError('getNews', []))
)
.map(res => {
let response: any = res;
return response.map((item) => new News(item));
});
}
订阅:
this.restProvider.getNews().subscribe((news: News[]) => {
this.news = news;
});
但是,当响应不是数组而是只有单个元素时,如何解决问题?还是响应错误,例如来自API的意外数据?
当前,在这些情况下,我的应用程序抛出此错误:
response.map不是函数
以下代码片段应可帮助您处理错误:
this.restProvider.getNews().subscribe((news: News[]) => {
this.news = news;
}, (err) => {
console.log(err);
});
您只需要在subscription函数中添加error参数。
现在来回答第一个问题:如果响应是单个对象怎么办?->函数的签名将始终强制其返回数组。该错误将在订阅端生成。一个简单的解决方案是更改响应的数据类型。
this.restProvider.getNews().subscribe((news:any) => {
this.news = news;
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句