Angular 在使用rxjs concat时,如何在get错误后继续调用API?
我正在使用concat按顺序调用多个API,但当出现错误时,concat停止调用API,因此如何获取错误并继续调用下一个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
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时如何出现错误?我尝试添加管道,但它不起作用