代码之家  ›  专栏  ›  技术社区  ›  Juan

RXJS6:使用catchError()可以在需要流的地方提供“undefined”。您可以提供可观察的、承诺的、数组的或不可观察的

  •  2
  • Juan  · 技术社区  · 6 年前

    我正在使用新的语法来符合RXJS 6 pipe() .也使用角6。我有一个处理HTTP请求的服务,它通过管道映射和 catchError 在连接错误的情况下显示Toast。不过,如果我加上 捕获错误 我进入控制台 您在需要流的位置提供了“undefined”。您可以提供一个可观察的、承诺的、数组的或不可观察的。

      getDataHttpRequest(url, returnType) {
        return this.http.get(url, this.getRequestOptions())
        .pipe(
          map((response) => {
    
            if(response){
    
            if (returnType === 'object') {
              return response[0] == undefined ? response : response[0];
            } else {
              return response;
            }
    
          }
          }),
          catchError((error):any => {
    
          if(error instanceof HttpErrorResponse && error.status === 0){
            //no connection error(either user has no connection or the server is down)
           this.toastr.error('Chequee su conexión e intente de nuevo en unos momentos. Contáctenos para reportar el problema a <a href="mailto:dev@info.com">dev@info.com</a>',"Error de Conexión",{tapToDismiss:true, disableTimeOut: true});
          }
           throwError(`Connection Error: ${error}`);
          })
    
    
        );
    
      }
    

    如果我移除 捕获错误 函数中的错误会消失在控制台中,所以这就是代码的中断部分。有什么问题吗?

    1 回复  |  直到 6 年前
        1
  •  6
  •   martin    6 年前

    的回调 catchError error 我也这么认为)。

    catchError((error):any => {
      if (whatever) {
        ...
        return empty(); // just complete
      }
      return throwError(`Connection Error: ${error}`); // return another `error`
    });
    
    推荐文章