【发布时间】:2017-12-01 23:38:35
【问题描述】:
我正在为同一个 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请求之前进行延迟?
【问题讨论】:
-
你试过
setTimeout(() => { .. }, 5000)吗?也许这可能会有所帮助 -
是的,我试过了,但也没有用。
-
问题是您在循环中发出请求。循环不会等待超时,而是几乎同时尝试触发所有请求。 debounce 将确保只触发最后一个请求。这就是为什么您看不到超过 1 条回复的原因。如果您可以完全放弃循环并使用 concatMap 的可观察链接将起作用。
标签: angular rxjs observable