Angular 在使用rxjs concat时,如何在get错误后继续调用API?

Angular 在使用rxjs concat时,如何在get错误后继续调用API?,angular,rxjs6,Angular,Rxjs6,我正在使用concat按顺序调用多个API,但当出现错误时,concat停止调用API,因此如何获取错误并继续调用下一个API,下面是我的代码: getData() { concat(...this.data.map(asset => this.assetService.requestData({ assetId: asset._id }) )) .pipe(catchError(error => { console.log(e

我正在使用concat按顺序调用多个API,但当出现错误时,concat停止调用API,因此如何获取错误并继续调用下一个API,下面是我的代码:

getData() {
    concat(...this.data.map(asset =>
      this.assetService.requestData({ assetId: asset._id })
    ))
      .pipe(catchError(error => {
        console.log(error);
        // return of(null);
        this.error = error;
        return throwError(error);
      }))
      .subscribe();

  }

错误捕捉应针对每个可观察对象单独进行。您只需返回一个空的可观察对象:

从'rxjs'导入{EMPTY};
concat(…this.data.map(资产=>
this.assetService.requestData({assetId:asset.\u id})
.pipe(catchError)(错误=>{
console.log(错误);
this.error=错误;
返回空;
}))
))
.pipe(filter(data=>!!data))//如果不希望在结果中看到空值,请添加此行
.subscribe();

另一个选项是使用
onErrorResumeNext
功能:

从'rxjs'导入{onErrorResumeNext};
onErrorResumeNext(…this.data.map(资产=>
this.assetService.requestData({assetId:asset.\u id})
)
.subscribe();

您可以尝试添加。请在启用
pipe()
函数之前重试(N)called@akkonrad但是我想在5次尝试之后,如果仍然出现错误,我可以继续获得另一个API。第二种方法对我有效,但是如果在使用OneRorResumeNext时如何出现错误?我尝试添加管道,但它不起作用