始终使用行为主体而不是主题的任何缺点(RXJS Angular)



我正在研究一个项目,在该项目中,代码库的某些部分非常自由地使用了行为。在大多数情况下,当没有初始状态或需要在第一个明确的" Onnext/Emit"之外具有初始值时使用。

我很难确定是否有缺点?另外,如果不是,为什么每个人都不总是会使用chativiorsubject(即使没有参数构造(而不是标准主题?

预先感谢!

行为对象与初始值以外的主题完全不同:它的作用也像一个replaysubject(1(。这意味着新订户将始终同步获得最后(或初始(值。有了一个主题,您只会得到订阅后发生的排放。

因此,如果您想将数据存储在服务中,则行为可能是一个不错的选择。另一方面,可能更适合向订户发出事件。

换句话说,当您从不关心过去时使用一个主题。


就最初的值而言,无论这些效果如何:如果您不需要一个效果,请不要使用一个。为什么?因为。我的意思是你也可以总是写

var x;
x = 5;

而不是

var x = 5;

但是...你为什么?

不要散发订户需要付出精力忽略的事件。一个典型的角度案例是使用您在ngondestroy中发射 完整的主题,因此您可以使用takeuntil限制组件中的订阅。如果这是一种行为,那就行不通。

尊重两种Subject S背后的原理很重要。在大多数情况下,每个选择都应由上下文确定。一些好的初始问题将如下:

  1. 我的流有一个初始状态吗?
  2. 我需要快速简便的Observable/Observer引擎吗?
  3. 我真的只需要一个管理"下一/完整/错误"和订阅的对象?
  4. 订户是否需要接收最后一项发射?

这些总是要要求帮助您决定使用哪种Subject的好问题。

相关内容

最新更新