Javascript Rxjs ReplaySubject使用';空';发射前的值-角度7
我想创建一个没有初始值的主题。 我创建了一个Javascript Rxjs ReplaySubject使用';空';发射前的值-角度7,javascript,angular,rxjs,Javascript,Angular,Rxjs,我想创建一个没有初始值的主题。 我创建了一个ReplaySubject,它只缓冲最后发出的值。 问题是,在订阅上,在它被发出之前,提供了一个null作为初始值 我的服务: private _replaySubjects = new ReplaySubject<Project>(1); public replaySubjectAsObservable$ = this._replaySubjects.asObservable(); Rxjs版本-6.5.2在使用This发出有效值之
ReplaySubject
,它只缓冲最后发出的值。问题是,在订阅上,在它被发出之前,提供了一个
null
作为初始值
我的服务:
private _replaySubjects = new ReplaySubject<Project>(1);
public replaySubjectAsObservable$ = this._replaySubjects.asObservable();
Rxjs版本-6.5.2在使用
This发出有效值之前,它不会发出任何值。\u replaySubject.next(newProject)
它还有一个额外的好处,即您可以使用this.\u replaySubject.getValue()
访问订阅之外的最后发出的值
private\u replaySubjects=newbehaviorsubject(null);
public replaySubjectAsObservable$=this.\u replaySubjects.asObservable().pipe(skipWhile(project=>project==null | | project==undefined));;
1个保存值的重播主题为行为主题。行为主体必须包含一个value.ReplaySubject,它缓冲所有已发出的值。您的理解或ReplaySubject是正确的。它不会向新订阅者发出初始值,而是向新订阅者发出最后一个值。您可以显示更多的代码吗?除了现在,它不会发出任何其他空值或未定义的值。谢谢您的回答,但没有回答我的问题。据我所知,ReplaySubject在由.next()发出之前不应该向订阅发送任何值。我的问题是,为什么在调用.next()之前会有一个null的初始值?@Igor.r我刚刚试过你的例子,它不会发出第一个null值。你能分享一个最小的StackBlitz或类似的显示你的问题吗?
this.subjectSub = someService._projectList$.subscribe(value => {
console.log(value)
});
private _replaySubjects = new BehaviorSubject<Project>(null);
public replaySubjectAsObservable$ = this._replaySubjects.asObservable().pipe(skipWhile(project => project === null || project === undefined));;