2017-10-12 119 views
0

我有一個web服務,提供有關當前在收音機上播放的(最後一首)歌曲的信息。用可觀察的和更新的數據檢查api的變化

我的observable如何更新我自己的http請求中的數據?

我的供應商:

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

我的組件:

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

我想要什麼,基本上是 「數據」 每一次Web服務響應的變化進行更新!我怎樣才能做到這一點 ?

非常感謝您

+0

這是否意味着你要對這個Web服務調用的時間每X量? – Catalyst

+0

是的,每當數據發生變化時,除非我無法知道歌曲何時結束,所以我不知道數據何時更改。 – Joni

回答

0

你可以做這樣的事情:在您的組件,請致電load()每10秒,並檢查數據是否已改變(我相信你想要保存在你的財產包含最新數據的組件)。

以下是如何與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方式。)