我们本周的RxJs主题是Subjects。Angular有多个服务和类(比如FormControl),让我们可以访问我们可以订阅的可观察对象。但如果我们想创建自己的Observable发射数据?
当有一个可观察到的构造函数和可观察的创建函数,如的
而且从
,这些解决方案都不如使用主题
.
为什么呢?因为实验对象为我们检查了很多框:
- 它们是多播的,这意味着它们支持开箱即用的多个订阅者(Observable默认不支持)。
- 它们可以重放值给新订阅者(
BehaviorSubject
而且ReplaySubject
这样做)
在构建Angular应用时,这两个特性非常关键,因为我们的数据通常由服务处理,然后由组件使用。例如,假设一个服务获取一些数据(例如,登录时的用户会话信息)。在这种情况下,稍后将在屏幕上显示的组件必须订阅该信息并立即获得当前会话信息(这就是为什么重玩性/缓存最新值非常重要)。
另外,Subject API非常简单:

所以我们可以完全控制我们排放什么,何时以及如何排放。所有这些都有一个方法:. next ()
既然主题
是具体类型的吗可观测的
,你可以用同样的方式订阅:subject.subscribe ()
.也就是说,将主题作为对象公开是一种最佳实践可观测的
通过使用asObservable ()
方法如下所示:

有关如何使用主题以及不同类型的主题的更多详细信息,请访问我的RxJs主题教程.