使用switchMap()
时尝试捕获错误时出现问题。
我想检查每个单独的api数据是否已经存在。
这是我的代码
public signupform(userData: SignupRequest): Observable<any>{
return this.http.post('api/auth/createorganisation')
.pipe
(tap( // Log the result or error
data => {
if (data.status['message'] === 'Success.') {
switchMap(() => this.http.post('api/auth/createuser')
.pipe(
catchError((error) => this.handleError(error))
)
)
}else{
throw new Error(data.status['message']);
}
}
)
)
}
error: boolean;
private handleError(error: HttpErrorResponse) {
this.error = true;
console.log(error)
return empty();
}
希望大家都能提供帮助。
预先感谢
答案 0 :(得分:0)
您在switchMap
内使用tap
是不正确的。您需要(根据需要)在switchMap
运算符之前/之后移动tap
(如下所示)(在此示例中,您不需要tap
运算符btw):
public signupform(userData: SignupRequest): Observable<any>{
return this.http.post('api/auth/createorganisation')
.pipe(
switchMap((<any>data) => {
if (data.status['message'] === 'Success.') {
return this.http.post('api/auth/createuser').pipe(
catchError((error) => this.handleError(error))
);
}else{
throw new Error(data.status['message']);
}
})
)
)
}
error: boolean;
private handleError(error: HttpErrorResponse) {
this.error = true;
console.log(error)
return empty();
}
希望这会有所帮助。
进一步阅读:
https://www.learnrxjs.io/operators/transformation/switchmap.html