Angular RXJS在拍摄后显示错误
在Angular 2中,我使用rxjs进行HTTP调用。当前设置为显示错误,如下所示Angular RXJS在拍摄后显示错误,angular,rxjs,Angular,Rxjs,在Angular 2中,我使用rxjs进行HTTP调用。当前设置为显示错误,如下所示 this.http.get("http://www.someapifunction.com/api" , {headers: headers, params: data}) .map(res => res.json()) .subscribe( data => { console.log(data); }, err => {
this.http.get("http://www.someapifunction.com/api" , {headers: headers, params: data})
.map(res => res.json())
.subscribe(
data => {
console.log(data);
},
err => {
console.log('error',err);
this.showError(err);
},
() => console.log('Request Complete')
);
如果出现错误,代码将运行显示错误消息的函数
我现在要做的是实现rxjs retryWhen+take,在打印错误消息之前运行代码2次。详情如下:
this.http.get("http://www.someapifunction.com/api" , {headers: headers, params: data})
.readyWhen(errors => errors.delay(5000).take(2))
.map(res => res.json())
.subscribe(
data => {
console.log(data);
},
err => {
console.log('error',err);
this.showError(err);
},
() => console.log('Request Complete')
);
我遇到的问题是,API重试两次都不成功,但它没有运行err函数。我需要做什么才能让它运行err函数,即this.bather(err)?和
retryWhen
每次next
通知都意味着它试图重新订阅其可观测的源。任何完成
和错误
通知只会进一步传递。因此,您要做的是,当您已经进行了两次尝试时,您只想进一步发送错误
错误作为next
通知传递到从retryWhen
s回调返回的可观察对象中,因此您希望有条件地将它们转换为error
例如,您可以这样做:
.retryWhen(errors => errors
.map((err, index) => {
if (index === 2) {
throw err;
}
return err;
})
.delay(5000))
谢谢你,我会试一试的!