2

我试图在登录时从回复主题中提取当前值。在当前流中订阅时,返回前一个值而不是当前值。所以收到的东西是登录时以前的东西,而不是当前的东西。有没有办法在 ReplaySubject 中获取订阅时 observable 的当前值,而不必求助于 BehaviorSubject?

东西.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}`;
  });
4

1 回答 1

3

您可以将缓冲区大小设置为 1:

private _stuffSubject = new ReplaySubject<any>(1);
于 2017-10-15T00:41:50.097 回答