【问题标题】:Check the change of api with observable and update data用 observable 和更新数据检查 api 的变化
【发布时间】:2018-03-24 05:45:42
【问题描述】:

我有一个网络服务,它提供有关当前在收音机上播放的(最后一首)歌曲的信息。

我的 observable 如何自己更新我的 http 请求中的数据?

我的提供者:

  load() : Observable<{}> {
    return this.http.get(this.URL).map(res => res.json());
  }

我的组件:

this.radio.load().subscribe(data => {
  console.log(data)
})

我想要的,基本上是每次网络服务响应变化时更新的“数据”!我该怎么做?

非常感谢

【问题讨论】:

  • 这是否意味着您想每隔 X 时间调用一次此 Web 服务?
  • 是的,每次数据都变了,除了我没办法知道歌曲什么时候结束,所以不知道数据什么时候变。

标签: angular api web ionic-framework observable


【解决方案1】:

您可以这样做:在您的组件中,每 10 秒调用一次 load(),并检查数据是否已更改(我相信您希望在包含最新数据的组件上保存一个属性)。

这是使用 RxJS 的方法:

IntervalObservable.create(10 * 1000 /* 10 seconds */)
    .takeWhile(() => this.alive) // only fires when component is alive
    .subscribe(() => {
        .radio.load()
        .subscribe(data => {
            /* ...check if data has changed... */
            console.log(data);
        });
});

关于this.alive - 这只是组件上的一个属性,在组件被销毁时需要设置为false(即在调用ngOnDestroy时),并且需要在组件初始化时设置为true (可能在ngOnInit)。

(当然,您可以使用更传统的 setIntervalclearInterval 方式来做同样的事情。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 2021-12-31
    • 1970-01-01
    相关资源
    最近更新 更多