我想從登錄時的ReplySubject中獲取當前值。在當前流程中訂閱時,將返回先前的值而不是當前值。所以收到的東西是以前的東西在登錄,而不是目前的東西。有沒有辦法在ReplaySubject上獲取訂閱中的observable的當前值,而不必求助於BehaviorSubject?RXJS獲取ReplaySubject的當前值
stuff.service.ts:
private _stuffSubject = new ReplaySubject<any>();
private _stuff$: Observable<any> = this._someSubject.asObservable();
get stuff$() {
return this._stuff$;
}
private fetchStuff() {
return this.http.get('/stuff/current')
.map(data => {
return data.json()
})
.catch(err => {
console.debug(this.constructor.name, 'handled error ->', err.message);
return Observable.of(false);
})
.map(stuff => {
this._stuffSubject.next(stuff);
})
}
stuff.component.ts:
this.stuffService.stuff$
.subscribe(({stuff1, stuff2, stuff3}) => {
this.stuff1 = `${stuff1}`;
this.stuff2 = `${stuff2}`;
this.stuff3 = `${stuff3}`;
});
你總是可以訂閱'_stuffSubject'來獲取當前的緩衝區,但是你可以無法分辨它何時發射所有物品。 – martin