2017-07-30 15 views
0

私は、最初のサービスコールから取得した値と同じURLの新しいサービスコールから取得した値を比較する必要があるシナリオを持っています。HTTPコールから前回と現在の値を取得するAngular2

サービスクラス:

getXRate(): Observable { 
    return this.http.get('someURL').subscribe((data) => { return data.json(); }); 
} 

さて、Component 1に、私は以下のように同じようngOnInitでこのサービスを呼び出す:

ngOnInit(){ 
    this.service.getXRate().subscribe(data => this.r = data.r); 
} 

// この時点で、私は最初の値を持つ

今、component 2に同じmetho dが呼び出され、Component 1に返された値に違いがあるかどうかがチェックされます。

これをどのように達成できますか?

私はReplaySubjectとBehaviorSubjectを使用しようとしましたが、それほど抜けませんでした。

+0

はあなたがかもしれ良い方法とがあり、比較したい理由を教えてもらえますそれを行う – Skeptor

+0

x Rateに変更があることをユーザーに警告するための比較が必要です。はいの場合、彼は – Gags

答えて

0

最後に取得したデータを保存し、コンポーネントで使用するサービスがあります。

既存のコード(この例ではサブスクリプションを購読していることにご注意ください)。
いくつかの 'サービス':

lastObject: any; 

storeLast(lastObject:any){ 
    this.lasObject = lastObject; 
} 

getLastObject(){ 
    return this.lastObject; 
} 

getXRate(){ 
    return this.http.get('url').map(res => res.json()); 
} 

コンポーネント1:

ngOnInit(){ 
    this.service.getXRate().subscribe(res => this.service.storeLast(res)); 
} 

コンポーネント2:

getAndCompareLast(){ 
    let object = this.service.getLastObject(); 
    this.service.getXRate().subscribe(res => { //Do some compare logic...}); 
} 
+0

を受け入れる必要がありますいくつかのHTTPキャッシュを使用する方法については?あなたは私にその事例を教えてもらえますか? – Gags

+0

キャッシングは、格納されたデータを比較することとは何も関係ありません。 –

関連する問題