gpt4 book ai didi

javascript - Angular 5 如何设置最小延迟(或超时)?

转载 作者:行者123 更新时间:2023-11-30 06:21:06 25 4
gpt4 key购买 nike

请求代码很简单:

getItem() {
return this.http
.post<ItemModel>(`${this.apiUrl}/${methodUrl}`, {})
.subscribe(response => {
...
});
}

有两种情况取决于服务器将处理请求的时间:我们在不到 1 分钟和超过 1 分钟内收到响应。

当我们快速接收响应时,我需要为第一个案例设置最小延迟 1 分钟,然后在 1 分钟内更快。

但我不能像这样简单地在响应中添加延迟 => {}:

getItem() {
return this.http
.post<ItemModel>(`${this.apiUrl}/${methodUrl}`, {})
.subscribe(response => {
setTimeout(()=>{ ... }, timeoutValue)
...
});
}

因为在这种情况下,延迟时间与响应时间相加,例如,如果响应 0.5 分钟且 timeoutValue == 1 分钟,我们将等待 1.5 分钟。我需要以某种方式将最短总时间设置为 1 分钟。

如何设置?

最佳答案

你可以使用forkJoin

getItem() {
return this.http
.post<ItemModel>(`${this.apiUrl}/${methodUrl}`, {})
.subscribe(response => {
...
});
}


getItemDelayed() {
return forkJoin(
getItem(),
interval(1000).pipe(take(1))
)
}

有了这个,每个可观察对象都将并行执行,但只有当两个都完成时才会发送结果。

因此,如果请求时间少于一秒,结果将在一秒内到达。

关于javascript - Angular 5 如何设置最小延迟(或超时)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53035018/

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