这就是我正在执行请求的方式(并且正在运行)。
this.http
.get(url, options)
.pipe(retryWhen((errors) => this.retry(errors, { delay: retryDelay, take: retryTake })))
.toPromise()
.catch((ex) => {
this.exception(ex);
throw ex;
});
现在,我有一个特定的地址,响应时间太长,因此我收到504。
所以我正在尝试使用timeout
,但似乎没有什么变化,就像在Chrome上最多等待1分钟一样。代码如下:
this.http
.get(`${this.host}/${action}${query}`, options)
.pipe(timeout(300000), (e) => {
console.log(e);
return of(null);
})
.pipe(retryWhen((errors) => this.retry(errors, { delay: retryDelay, take: retryTake })))
.toPromise()
.catch((ex) => {
this.exception(ex);
throw ex;
});
我可能做错了什么?
与之合作:
角度6.1.0
答案 0 :(得分:0)
您可以尝试使用takeUntil方法来代替超时
import { timer } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
//after 30 seconds, stop retrying
const timer$ = timer(30000);
this.http
.get(url, options)
.pipe(retryWhen((errors) => this.retry(errors, { delay: retryDelay, take: retryTake })),
takeUntil(timer$))
.toPromise()
.catch((ex) => {
this.exception(ex);
throw ex;
});