gpt4 book ai didi

javascript - 刷新类似于 Cron 作业的 Angular 组件

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

我的 Angular 6 应用程序中有一个 Dashboard 组件,我需要每分钟刷新一次,因为从 API 获取的数据每分钟更新一次(有一个 Cron 作业在 backed 上运行以更新数据)。

我知道 Observable.interval(60000) 但这是我最后一个选择,因为我的 API 数据会在时钟的每一分钟后刷新,而不是每隔 60 秒刷新一次。

例如说应用程序在上午 8 点 0 分 30 秒开始。我不希望我的仪表板在 60 秒后刷新,即 8 小时 1 分 30 秒,但我希望它在 8 小时 1 分 0 秒后刷新。希望我的要求很清楚。

最佳答案

您可以在设置 Observable 之前计算当前毫秒计数与零之间的差异。

...
const now = new Date();
const initialDelay = 60 * 1000 - (now.getSeconds() * 1000 + now.getMilliseconds());
Observable
.timer(initialDelay, 60000)
.subscribe(...)

精度可能不理想,但也许这就足够了。

更新:使用 WebSocket 连接可能是更可靠的解决方案。我想后端应用程序知道数据何时更新,因此它可以在新数据可用后立即发送新数据。这样您就可以在一个地方配置日程安排。

基本上,您需要一个服务来包装套接字连接并处理初始化和监听来自服务器的消息。它还会提供一个用于订阅新消息的可观察对象。

也许 this article会更有帮助。

关于javascript - 刷新类似于 Cron 作业的 Angular 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51758270/

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