gpt4 book ai didi

Angular 2发送http请求之前的延迟

转载 作者:行者123 更新时间:2023-12-02 16:32:20 26 4
gpt4 key购买 nike

我正在循环执行同一 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请求之前进行延迟?

最佳答案

您可以使用 switchMap 和计时器:

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响应的延迟时,我会使用它。

关于Angular 2发送http请求之前的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47591761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com