如果没有数据,如何处理地图?

问题描述 投票:0回答:2

我有执行对服务器的请求的方法:

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"]上失败了,因为响应什么也不返回。

如何解决?

angular rxjs angular8
2个回答
2
投票

您可以尝试进行简单的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))
    );
  }

如果要过滤响应,请检查filterrjxs运算符。 https://www.learnrxjs.io/learn-rxjs/operators/filtering/filter


0
投票

或者,您可以考虑使用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))
    );
  }
© www.soinside.com 2019 - 2024. All rights reserved.