如果不是数据,如何处理地图作为响应?

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))
    );
  }

如果要过滤响应,请查看 rjxsfilter 运算符。 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))
    );
  }