根据我目前对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块条件通过。但这并没有发生。
我做错了什么?
答案 0 :(得分:2)
观察者列表为空的原因是因为没有观察者的观察者。
您的next()
发射不会向观察者列表添加任何值,它只会添加要发送给所有观察者的发射。如果您希望观察者列表非空,请订阅您的主题:
this.dataObs.subscribe();
this.dataObs.observers.length != 0; // => true