为什么RX中有这么多Subject对象?

时间:2019-03-27 10:46:39

标签: rxjs behaviorsubject

您能否阐明以下几点?为什么?

  1. 主题
  2. BehaviourSubject
  3. ReplaySubject
一起存在吗?

仅使用带有buffer参数的Subject就足够了吗? 毕竟,只有这个(发出最后一个数量)才有所不同。

可能是:(参数是缓冲区大小)

  • 主题(0)=正常主题();
  • Subject(1)= BehaviourSubject();
  • Subject(5)= ReplaySubject(5);

什么原因?

1 个答案:

答案 0 :(得分:1)

1) 主题甚至不保存值。 订阅者将看不到订阅前发出的所有值。

2) BehaviorSubject拥有最后一个值,并且必须拥有一个值。 订户将始终获得最后发出的值。

3) ReplaySubject可以保存x个值,但不是必须的。 如果订阅者之前发出过,它们将获得最后的x个值。否则,它们将获得0-x值。

它们是不同的,在不丧失功能的情况下不能在它们之间进行更改。