我在循环中为同一个API执行一些请求。在服务器端,我需要检查以前的结果以进行一些更改。但如果请求不止一个循环,我就无法看到之前的结果。
组件中的:
this.service.createEmail(...).delay(5000).debounceTime(5000).timeout(5000).subscribe(...);
并在服务中:
createEmail(...): Observable<Json> {
return this.http
.post('url',
JSON.stringify(model),
{ headers: this.headers })
.delay(5000).debounceTime(5000).timeout(5000)
.map((response: Response) => {
return this.responseService.extractData(response);
})
.catch(error => {
return this.errorService.handleError(error);
});
}
没有帮助我。 需要进口存在。 只是js setInterval帮助了我。
如何以其他方式在http请求之前做延迟?
答案 0 :(得分:0)
您可以使用switchMap和timer:
createEmail(...): Observable<Json> {
return Observable
.timer(5000)
.switchMap(() =>
this.http.post(
'url',
JSON.stringify(model),
{headers: this.headers}
)
)
.map((response: Response) => {
return this.responseService.extractData(response);
})
.catch(error => {
return this.errorService.handleError(error);
});
}
在switchMap之前,您可以添加debounceTime和另一个rx运算符。
我邀请您查看switchMap的文档以获取更多信息:https://www.learnrxjs.io/operators/transformation/switchmap.html
如果您不想立即传递观察结果,可以使用.delay
。例如,我想在模拟API响应的延迟时使用它。