Angular 在HTTP服务中实现设置间隔
我已经实现了angular setinterval方法,用于每2秒触发一次http服务(getDeviceMobileNumber)。但我只想在状态代码为400时再次触发(最多3次)HTTP服务 但是当前的实现(setinterval)没有等待响应并调用服务3次 是否有解决方案在收到响应后进行HTTP服务调用?Angular 在HTTP服务中实现设置间隔,angular,Angular,我已经实现了angular setinterval方法,用于每2秒触发一次http服务(getDeviceMobileNumber)。但我只想在状态代码为400时再次触发(最多3次)HTTP服务 但是当前的实现(setinterval)没有等待响应并调用服务3次 是否有解决方案在收到响应后进行HTTP服务调用? this.counter= 0; public getMobileNumberCall() { this.timer = setInterval(() =>
this.counter= 0;
public getMobileNumberCall() {
this.timer = setInterval(() => {
this.counter++;
if (this.counter === 4) {
clearInterval(this.timer);
} else {
this.commonServices.getDeviceMobileNumber().then((data: any) => {
clearInterval(this.timer);
}).catch((err: any) => {
//400 error
})
}
}, 2000);
}
在http.get管道中使用retryWhen
function http_retry(maxRetry: number = 3, delayMs: number = 2000) {
return (src: Observable) => src.pipe(
retryWhen(_ => {
return interval(delayMs).pipe(
flatMap(count => count == maxRetry ? throwError("Giving up") : of(count))
)
})
)
}
this.http.get("/api")
.pipe(http_retry())
.subscribe(result => console.log(result))
我也有同样的需要,我用一个简单的方法解决了它。也许这会帮助你找到解决办法