Angular 链式方法中的异常处理?
Exception Handling in Angular Chained Methods?
我有一个简单的问题,我认为 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 个方法:
convertFileFromFilePathToBlob
convertBlobToFormData
postImageToServer
所有 3 种方法都可能 raise/emit 在任何失败点出错。我的问题是关于在这种情况下如何进行异常处理?
我当前的实现是否只有一个 catchError
可以?如果没问题,如果任何链式方法引发错误,它是否会被执行?
或
我是否需要在每个方法之后使用多个 catchError
运算符来捕获其错误?如果是,我不知道该怎么做?
谁能解释一下在这种情况下我应该如何处理错误?
你只能有一个catchError
,应该足够了。但要确保它在所有其他运营商的末尾。因为它捕获错误,替换流,因此允许流继续。例如参考下面的气泡图。
RxJS documentation on catchError
在你的情况下,我没有看到使用 catchError
的理由,你可以只使用 Observable
的错误处理。 .subscribe
接受第二个参数作为错误处理函数。
我有一个简单的问题,我认为 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 个方法:
convertFileFromFilePathToBlob
convertBlobToFormData
postImageToServer
所有 3 种方法都可能 raise/emit 在任何失败点出错。我的问题是关于在这种情况下如何进行异常处理?
我当前的实现是否只有一个 catchError
可以?如果没问题,如果任何链式方法引发错误,它是否会被执行?
或
我是否需要在每个方法之后使用多个 catchError
运算符来捕获其错误?如果是,我不知道该怎么做?
谁能解释一下在这种情况下我应该如何处理错误?
你只能有一个catchError
,应该足够了。但要确保它在所有其他运营商的末尾。因为它捕获错误,替换流,因此允许流继续。例如参考下面的气泡图。
RxJS documentation on catchError
在你的情况下,我没有看到使用 catchError
的理由,你可以只使用 Observable
的错误处理。 .subscribe
接受第二个参数作为错误处理函数。