如果不是数据,如何处理地图作为响应?
How to handle map in response if not data?
我有向服务器执行请求的方法:
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"]
上失败了,因为没有响应 returns。
如何解决?
您可以尝试做一个简单的 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))
);
}
如果要过滤响应,请查看 rjxs
的 filter
运算符。 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))
);
}
我有向服务器执行请求的方法:
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"]
上失败了,因为没有响应 returns。
如何解决?
您可以尝试做一个简单的 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))
);
}
如果要过滤响应,请查看 rjxs
的 filter
运算符。 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))
);
}