2017-05-31 42 views
1

我前些日子注意到的东西。我正在订阅@ngrx/effects内的Actions流。我注意到(对我来说一个问题),哪个组件迟到Actions,会收到最后一次调度的操作。这是我看到的却是因为里面@ngrx/store调度是BehaviourSubject并引述RxJS文档:@ ngrx/effects BehaviourSubject为用户提供最后的价值

Rx.BehaviorSubject类

代表随时间变化的值。观察者可以订阅主题以接收最后(或初始)值和所有后续通知。

不幸的是,我想要订阅操作流而不检索最后一个值。它给我造成问题就像用户返回页面时显示错误消息。

BehaviorSubjectSubject之间的差别(这确实是我喜欢的方式)在这里demo'd:

https://codepen.io/anon/pen/zwgype

是否有实现这一目标的方法吗?

回答

1

您可以用“跳过”操作跳过前值:

someBehaviorSubject.skip(1) 
+0

同意了,但是当我派遣一个实际的行动来显示错误消息的第一时间,我最终会跳过它。 : -/ – maddockst

+0

如果它是一个行为主题,那么它总是有一个初始值(如果未提供,则为未定义值),并且您只会跳过此初始值。如果您保持打开订阅,您将获得更新的下一个值。 – ZahiC

+0

只要确保'skip'在'ofType'之前,通常用于过滤操作。 – cartant