好吧,這是一個快速的,我已經有點疲憊了,並且困惑着我自己:DRxJs - (爲什麼)Observable是否會在新的subsription上發佈它的最新值?
我正在使用angular2和RxJS Observables。
我有一個屬性「數據」,這是獲得在構造函數中設置可觀察到的服務,並返回該觀察的訂閱方法。
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
}
}
前段時間,我已經很聰明地回放了一些主題,以便始終將新序列的所有值發送給新的訂閱者。然而,隨着Observable上面的代碼似乎將它發佈給新用戶的最新價值。這是打算?
test(i: number) {
if (i > 0) {
setTimeout(() => {
this.dataService.getData().subscribe((data) => {
this.debug.log(data);
this.test(i-1);
});
}, 2000);
}
}
test(4)
我得到每個迭代的值。我很困惑,因爲一年前,當我想要這種行爲時,在訂閱「太晚」時我沒有任何新的價值。從本質上講,我只想緩存http.get的結果,併爲所有訂閱者提供相同的值,而不是爲每個訂閱創建一個新的http請求(在getData()中返回http.get(url)..) )
請問'this.http.get(url).map(res => res.json()).share()'做你想做的事情嗎? – estus
我很困惑。你說觀察員正在發佈新用戶的最後價值,你似乎並不喜歡。然後你說這就是你想要的。它是什麼? – acdcjunior
對不起,在電話裏,累了,.....是的,它表現了我想要的方式。我只是不確定它是否有意,因爲一年前它沒有這樣工作(或者至少我認爲)。我想我應該再次閱讀觀察對象,當我有時間後 – ch40s