首页 文章

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

提问于
浏览
1

我的Angular 6应用程序中有一个Dashboard组件,我需要每隔一分钟刷新一次,因为从API获取的数据每分钟都会更新(有一个Cron作业在运行时支持更新数据) .

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

对于例如说应用程序从8h 0分钟和30秒AM开始 . 我不希望我的仪表板在60秒后刷新,即8小时1分30秒,但我希望它在8小时1分0秒刷新 . 希望所要求的是明确的 .

1 回答

  • 1

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

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

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

    UPDATE :使用WebSocket连接可能是一个更强大的解决方案 . 我想后端应用程序知道数据何时更新,以便在新数据可用后立即发送新数据 . 这样就可以在一个地方配置调度 .

    基本上,您需要一个包装套接字连接并处理初始化并从服务器侦听消息的服务 . 它还将提供订阅新消息的可观察性 .

    也许this article会更有帮助 .

相关问题