javascript - RxJS ReplaySubject 观察者长度在下一个之后不会增加

标签 javascript rxjs

根据我目前对 RxJS 中 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.length1,从而允许第一个 if block 条件通过。但这并没有发生。

我做错了什么?

最佳答案

您的观察者列表为空的原因是因为您的可观察对象没有观察者。

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

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

关于javascript - RxJS ReplaySubject 观察者长度在下一个之后不会增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49245964/

相关文章:

javascript - 如何在 AngularJs 中打印 swal Alert 框中的数组?

javascript - NgMap 设置标记颜色

javascript - 如何删除日期选择器中禁用的日期计数

javascript - 为什么 Rx.Observable.of(true) 开始发射

javascript - 当只有一个订阅者时,为什么一个序列会被多次调用?

javascript - 如何访问 map 内的下一个/上一个对象 - react ?

javascript - 如何为圆弧的 SVG 路径设置动画?

Angular:使用 RxJs/BehaviorSubject 在组件之间动态共享数据

angular - 等待可观察对象时何时关闭离​​子加载 Controller

RXJS:交替组合流元素