好的,我有这个有趣的用例。我需要在特定条件下重试HTTP调用,其中最后一次调用的状态代码是501.重试应该发生5次。如果失败,只需返回组件中的错误处理程序。 (这是有效的)
我实际上有这个工作,但这是场景。我还需要以不同的方式迎合不同的状态代码。例如,当状态代码为502或503时,我需要一个弹出窗口。这些不同的场景由我需要传递状态代码的函数this.buyPrepaidMobileService.handlebuyPrepaidMobileError
处理。但是我不知道如何在组件内部的错误处理程序中检索它。
这是我的代码:
在组件中:
buyPrepaidMobile(data) {
this.loader.startLoading();
this.buyPrepaidMobileService.onBuyPrepaidMobile(data).subscribe(
response => {
this.buyPrepaidMobileService.handlebuyPrepaidMobileSuccess(response)
this.activeStep = 3;
this.progressIndicator.setStep(3);
this.loader.stopLoading();
},
error => {
this.loader.startLoading();
//This is where I need to handle the other status codes
this.buyPrepaidMobileService.handlebuyPrepaidMobileError(error.header.statuscode)
this.activeStep = 3;
this.progressIndicator.setStep(3);
this.loader.stopLoading();
console.log('Retried 5 times, ended with failure');
}
)
}
在我的服务中:
return this.prepaidPaymentProxyService.performAirtimePrepaidPayment(request)
.retryWhen(error => {
return error
.flatMap((error: any) => {
if (error.header.statuscode === '501') {
console.log(++count);
return Observable.of(error).delay(1000)
}
return Observable.throw(error);
}).take(5).concat(Observable.throw(error));
})
现在这是我的问题。在我的组件中,我需要error对象来获取状态代码。然而,通过这样做,我回到了一个主题。而且我不知道如何从中检索状态代码。
任何人都可以通过指出我做错了什么来帮助我吗?如果状态代码不是501,我需要组件中的错误对象,这样我就可以用不同的方式处理不同的状态代码。
感谢任何帮助:)