angular - 多个 API 调用期间的角度错误处理
问题描述
在我的 Angular 应用程序中,我必须依次调用两个 API 方法。如果第一个 API 调用返回 200 OK 或 Success,则需要调用第二个 API 方法。
如果第一次调用不成功,则需要记录错误并且不应调用第二种方法。
如果第一次调用成功,则需要调用第二个 API 方法,如果响应为 200 OK 或成功,则应返回成功。
如果第二次调用不成功,则需要记录不同的错误消息。
从 '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;
})
)
}
推荐阅读
- python - 在 Plotly Dash 中显示后端日志消息
- python - 使用 Python 的“fabric”运行 docker-compose
- python - 如何在 matplotlib 图上制作动画
- node.js - 不抛出嵌套的 try catch
- php - CORS - 通过 AJAX 在 UBuntu 18.04 上的 Laravel
- python - 如何在某些图片上上传重复标签以实现 azure 自定义视觉?
- java - 如何将变量从方法传递给构造函数
- python - 将列表转换为numpy数组时保持原始数据类型
- java - 打印枚举字典中的值
- c# - 当两台服务器在迁移期间具有相同的 IP 时,我如何获得差异?