2017-12-20 5 views
0

私のコンポーネントにはバックエンドから同じデータが必要な問題はほとんどありません。だから、彼らはすべてgetDataMethod()を呼び出します。それは私が約この方法3-4回を呼び出すこの時間の間に5秒で来て、この角度の取得HTTPは観測可能から1つのインスタンスを取得

public getData(): Observable<any> { 
    return this.http.get<any>(this.backendUrl); 
} 

応答のように見えます。ですから、私の質問は、複数の加入者に同じ観察可能なものを返すということでしたか?

答えて

0

あなたはこのたび、誰かが観測に加入して、あなたのAPIエンドポイントへの呼び出しを行うことなく、サーバからの結果を再生しますので

public getData(): Observable<any> { 
    return this.http.get<any>(this.backendUrl) 
       .publishReplay(1) 
       .refCount(); 
} 

などのreplaySubjectとして応答を公開できます。

+0

'shareReplay(1)'が短いです。 –

-1

"キャッシュ"変数を使用できます。

data:any 
public getData(): Observable<any> { 
    if (this.data) 
    return Observable.of(this.data); 
    else 
    return this.http.get<any>(this.backendUrl).do((data:any)=> 
     { 
      this.data=data 
     }); 
} 
+0

依頼が完了していない間に購読すると、依然として複数の要求が発生します。 –

関連する問題