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;
    })
  )
}