我的Angular 6应用程序中有一个Dashboard组件,由于从API提取的数据每分钟都会更新,因此我需要每隔一分钟刷新一次(有Cron作业在后台运行以更新数据)。
我了解Observable.interval(60000)
,但这是我最后的选择,因为我的API数据每隔一分钟就会刷新一次,而不是每隔60秒刷新一次。
例如说应用程式从8小时0分和30秒AM开始。我不希望仪表板在60秒(即8小时1分30秒)后刷新,但我希望它在8小时1分0秒进行刷新。希望要求清楚。
答案 0 :(得分:2)
您可以在设置Observable之前计算当前毫秒计数与零之间的差。
...
const now = new Date();
const initialDelay = 60 * 1000 - (now.getSeconds() * 1000 + now.getMilliseconds());
Observable
.timer(initialDelay, 60000)
.subscribe(...)
精度可能不是理想的选择,但也许就足够了。
更新:使用WebSocket连接可能是更可靠的解决方案。我想后端应用程序知道何时更新数据,以便它可以在新数据可用后立即发送新数据。这样,您可以在一个地方配置调度。
基本上,您需要一个包装套接字连接并处理初始化和侦听来自服务器的消息的服务。订阅新消息也可以看到。
也许this article会更有帮助。