RxJS ReplaySubject观察者长度在接下来没有增加

时间:2018-03-12 23:28:29

标签: javascript rxjs

根据我目前对RxJS中a = [1,nan,3,nan] b = [1,0.2,3,4.1] 的理解,下面的代码应该有效:

ReplaySubject

但它没有,我不明白。

基于我目前的理解,import { ReplaySubject } from 'rxjs/ReplaySubject'; private dataObs = new ReplaySubject(1); get_posts(value) { console.log(this.dataObs.observers.length); if (this.dataObs.observers.length) { console.log('Going cache'); return this.dataObs; } else { console.log('Going live'); return this.http.get(`endpoing here`) .map((res) => { this.dataObs.next(res); console.log(this.dataObs.observers.length); return res; }); } } 应使this.dataObs.next(res)this.data.observers.length,从而允许第一个if块条件通过。但这并没有发生。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

观察者列表为空的原因是因为没有观察者的观察者。

您的next()发射不会向观察者列表添加任何值,它只会添加要发送给所有观察者的发射。如果您希望观察者列表非空,请订阅您的主题:

this.dataObs.subscribe();
this.dataObs.observers.length != 0; // => true