可观察的 HttpResponseError

Observable HttpResponseError

我正在尝试使用可观察对象处理 HttpError 或 HttpErrorResponse,但我所能做的就是处理所需的 HttpResponse,但我还需要避免这种情况

我需要能够在响应出现问题时提醒用户,也许他们可以重试...

this.addService.log()
          .subscribe(event => {
            if (event instanceof HttpResponse) {
              //do something
            } else if ( event instanceof HttpErrorResponse){ 
              console.log(`couldn't httperrorresponse`)
            } else if (event instanceof ErrorEvent){ 
              console.log(`couldn't errorevent`)
            } 
    });
}

我已经尝试将所有内容都包含在 try catch 中,但它仍然没有抛出错误

您可以使用 HTTPInterceptor - Interceptor

你会得到这样的东西:

@Injectable({
  providedIn: 'root'
})
export class ErrorInterceptorService implements HttpInterceptor {

  constructor(private toastr: ToastrService, private router: Router) { };

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(req).pipe(
      retry(1), // repeating the request one time on error
      catchError((error) => {
        if (error) {
            // Do what you want with the error
            return throwError(error); // Throw error like it normally does, without the catchError
        }
     }
  }

你可以试试这个tutorial

无需创建服务即可完成此操作的最佳方法...只需添加一个逗号并添加一个错误 'subscription' 我想但每次出现错误时都会触发...所以。 .. 快乐编码 breathren

this.addService.log()
          .subscribe(event => {
            if (event instanceof HttpResponse) {
              //do something
            } else if ( event instanceof HttpErrorResponse){ 
              console.log(`couldn't httperrorresponse`)
            } else if (event instanceof ErrorEvent){ 
              console.log(`couldn't errorevent`)
            }}, err=>{
                console.log(err)
                JSON.stringify(err)
            });
}