我有执行对服务器的请求的方法:
public get(): Observable<any> {
return this.httpClient.get(URL + "get").pipe(
map((result) => {
result["data"].forEach((item) => {
item.title = "title";
});
return result["data"];
}),
catchError((error: HttpErrorResponse) => throwError(error))
);
}
但是它在行result["data"]
上失败了,因为响应什么也不返回。
如何解决?
您可以尝试进行简单的if
检查:
public get(): Observable<any> {
return this.httpClient.get(URL + "get").pipe(
map((result) => {
if (result['data']) {
result["data"].forEach((item) => {
item.title = "title";
});
}
// this may return undefined.
return result["data"];
}),
catchError((error: HttpErrorResponse) => throwError(error))
);
}
如果要过滤响应,请检查filter
的rjxs
运算符。 https://www.learnrxjs.io/learn-rxjs/operators/filtering/filter
或者,您可以考虑使用filter运算符,仅当定义了result.data
时,该运算符才能完成可观察的动作。这是实现它的方法:
public get(): Observable<any> {
return this.httpClient.get(URL + "get").pipe(
filter((result) => result['data']),
map((result) => {
result["data"].forEach((item) => {
item.title = "title";
});
return result["data"];
}),
catchError((error: HttpErrorResponse) => throwError(error))
);
}