NgRx 选择器 - 冷或热可观察

NgRx Selector - cold or hot observable

我知道 ngrx 存储是基于这个答案的热门观察:

我的问题是选择器是热可观察对象还是冷可观察对象?

谢谢!

它很冷,因为它不会订阅源,直到有人订阅它。

除了 sharepublish 运算符之外的大多数运算符都会创建冷可观察对象。

选择器是纯函数而不是可观察值。

您可能问的是 select 运算符或函数。

this.store.pipe(select(...)) // or this.store.select(...)

基本上就是这样

this.store.pipe(
  map(...),
  distinctUntilChanged()
)

mapdistinctUntilChanged 并没有真正使可观察到的热或冷。如果他们被订阅,他们只会订阅他们的来源,所以只有当你订阅时,数据才会流经他们。但是,如果来源(例如商店)在您订阅之前从生产者那里收到物品(即很热),您将不会收到它们。

所以订阅 this.store.pipe(select(...)) 不会告诉商店开始产生价值,商店会在此之前发出价值,因为它正在积极倾听其生产者(reducers 和动作),但是 select不会收听商店,除非您订阅,否则不会有数据流经它。