Rxjs ReplaySubject在发出之前以“空”值初始化-Angular 7

时间:2019-07-04 09:06:09

标签: javascript angular rxjs

我想创建一个没有初始值的主题。 我创建了一个ReplaySubject,它仅缓冲最后发出的值。
问题在于订阅上的null会在发出之前作为初始值。

我的服务:

 private _replaySubjects = new ReplaySubject<Project>(1);
 public replaySubjectAsObservable$ = this._replaySubjects.asObservable();

我的组件

 this.subjectSub = someService._projectList$.subscribe(value => {
            console.log(value)
  }); 

Rxjs版本-6.5.2

1 个答案:

答案 0 :(得分:0)

在用this._replaySubject.next(newProject)发出有意义的值之前,它不会发出任何值。

它的另一个好处是,您可以使用this._replaySubject.getValue()访问订阅之外的最后一个发出的值。

private _replaySubjects = new BehaviorSubject<Project>(null);
public replaySubjectAsObservable$ = this._replaySubjects.asObservable().pipe(skipWhile(project => project === null || project === undefined));;