0

我有一个简单的问题,我认为 Angular 专家很容易回答。

我有如下方法:

 private uploadPicture(imagePath: string, apiUrl: string): Observable<ApiResponse<string>> {

   return this.convertFileFromFilePathToBlob(imagePath).pipe(
      switchMap(item => this.convertBlobToFormData(item)),
      switchMap(formData => this.postImageToServer(formData, apiUrl)),
      catchError((error: any) => {
        if (error instanceof Response) {
            return throwError(new AppError(error));
        } else {
            return throwError(new AppError(null, 'Error occured at convertFileFromFilePathToBlob.'));
        }
      })
    );
  }

我在一种方法中链接了 3 种方法:

  1. convertFileFromFilePathToBlob
  2. convertBlobToFormData
  3. postImageToServer

所有 3 种方法都可以在任何故障点引发/发出错误。我的问题是关于在这种情况下如何进行异常处理?

我目前的实现,只有一个catchError就可以了吗?如果没问题,如果任何链接方法引发错误,它会被执行吗?

或者

我是否需要catchError在每种方法之后使用多个运算符来捕获其错误?如果是,我不知道我该怎么做?

有人可以解释在这种情况下我应该如何处理错误吗?

4

1 回答 1

1

你只能有一个catchError,这应该足够了。但请确保它位于所有其他运算符的末尾。因为它捕获错误,替换流,从而允许流继续。例如参考下面的气泡图。

在此处输入图像描述

关于 catchError 的 RxJS 文档

角大学岗位


在你的情况下,我看不出使用的理由catchError,你可以只使用Observable' 的错误处理。.subscribe将第二个参数作为错误处理函数。

于 2019-07-21T17:56:01.437 回答