これは簡単なことですが、私はちょっと疲れていて、混乱しています。DRxJs - (なぜ)Observableは新しいサブスクリプションで最新の値を出しますか?
私はangular2とRxJS Observablesを使っています。
私は、プロパティ "data"を持つサービスを持っています。これはコンストラクタで取得されるObservableと、このObservableを返すメソッドです。
export class test{
private data: Observable<Object>
constructor(private http: Http){
this.data = this.http.get(url).map(res => res.json());
}
getData(): Observable<Object>{
return this.data
}
}
私はずっと前にreplaySubjectsの作業をしていましたが、新しいサブスクライバにすべての値を常に出すようにしました。しかし、上記のコードでObservableは新しい加入者にとって最新の価値を発するようです。これは意図されていますか?
test(i: number) {
if (i > 0) {
setTimeout(() => {
this.dataService.getData().subscribe((data) => {
this.debug.log(data);
this.test(i-1);
});
}, 2000);
}
}
test(4)
私はすべての繰り返しに対して値を取得します。私は混乱しています。なぜなら、1年前にその行動が欲しかったから、「あまりにも遅く」購読するときに私は新しい価値を持っていませんでした。 基本的には、http.getの結果をキャッシュし、すべてのサブスクライバに対して新しいhttpリクエストを作成するのではなく、getData()でhttp.get(url)を返すのではなく、 )
'this.http.get(url).map(res => res.json())。share()'あなたは何をしますか? – estus
私は混乱しています。あなたは、あなたが好きではないと思われる新しい加入者のために、オブザーバーが最後の価値を発していると言います。それからあなたはそれがあなたが望むものだと言います。それは何ですか? – acdcjunior
申し訳ありませんが、電話や疲れて.....はい、それは私が望む方法を振る舞います。私はそれが意図されているかどうかは分かりません。なぜなら、それは1年前にそれがそのように働かなかったからです(少なくとも私はそれを考えます)。私は私が後で時間があるときに再びobservablesを読むべきだと思う。 – ch40s