Angular 多个 API 调用期间的错误处理
Angular error handling during multiple API calls
在我的 Angular 应用程序中,我必须顺序调用两个 API 方法。如果第一个 API 调用 returns 200 OK 或 Success 然后需要调用第二个 API 方法。
如果第一次调用不成功则需要记录错误并且不应调用第二种方法。
如果第一次调用成功,则需要调用第二个 API 方法,如果响应为 200 OK 或成功,则应该 return 成功。
如果第二次调用不成功,则需要记录不同的错误消息。
从 'rxjs/operators' 导入 { switchMap };
validateandSave(user: User) {
return this.utility.validate().pipe(
switchMap(data => {
this.result= data.status;
if(status == 'success')
// call second method
})
)
}
这里最主要的是,如果第一次调用失败,则不应调用第二个 API 方法。
在Google中,可以看到switchMap、mergeMap、Pipe等解决方案。但是我找不到单独处理错误的解决方案。
有人可以与我分享示例代码来处理这种情况。
很多人问这个问题。有很多方法可以管理 RxJS 流的错误。这是一个:它捕获错误,记录它们,然后静默完成,最终订阅没有任何错误。
当然,通常你想做得比忽略错误更好。
validateandSave(user: User) {
return this.utility.firstStream().pipe(
catchError(err => {
console.log("Error from first call: ", err);
return EMPTY;
}),
switchMap(data =>
data.result === something ?
this.utility.secondStream() :
EMPTY;
),
catchError(err => {
console.log("Error from second call: ", err);
return EMPTY;
})
)
}
在我的 Angular 应用程序中,我必须顺序调用两个 API 方法。如果第一个 API 调用 returns 200 OK 或 Success 然后需要调用第二个 API 方法。
如果第一次调用不成功则需要记录错误并且不应调用第二种方法。
如果第一次调用成功,则需要调用第二个 API 方法,如果响应为 200 OK 或成功,则应该 return 成功。
如果第二次调用不成功,则需要记录不同的错误消息。
从 'rxjs/operators' 导入 { switchMap };
validateandSave(user: User) {
return this.utility.validate().pipe(
switchMap(data => {
this.result= data.status;
if(status == 'success')
// call second method
})
)
}
这里最主要的是,如果第一次调用失败,则不应调用第二个 API 方法。
在Google中,可以看到switchMap、mergeMap、Pipe等解决方案。但是我找不到单独处理错误的解决方案。
有人可以与我分享示例代码来处理这种情况。
很多人问这个问题。有很多方法可以管理 RxJS 流的错误。这是一个:它捕获错误,记录它们,然后静默完成,最终订阅没有任何错误。
当然,通常你想做得比忽略错误更好。
validateandSave(user: User) {
return this.utility.firstStream().pipe(
catchError(err => {
console.log("Error from first call: ", err);
return EMPTY;
}),
switchMap(data =>
data.result === something ?
this.utility.secondStream() :
EMPTY;
),
catchError(err => {
console.log("Error from second call: ", err);
return EMPTY;
})
)
}