首页 > 解决方案 > 如果只有一个值,则 BehaviourSubject 会多次命中

问题描述

我在共享服务中使用了 behaviorSubject 以在单击按钮时获取当前值。它按预期工作,但有时在 behaviorsubject 的订阅块内的 api 调用会多次命中。

会是什么问题?

标签: javascriptangularrxjs5

解决方案


可能有以下任何原因:

  1. 当您在多次执行的代码块中订阅 BehaviorSubject 时,就会发生这种情况。例如,如果您订阅了多次执行的角度组件的 ngAfterViewChecked 生命周期钩子。
  2. 您从未取消订阅,但每次应用加载组件时,订阅您的行为主题。
  3. BehaviorSubject 的订阅者总是至少执行一次,因为 BehaviorSubject 在创建时需要一个默认参数,并且至少发出一次传递的默认参数,如果您在 BehaviorSubject 实例上仅调用一次 .next() 方法,订阅者将执行两次。第一次在创建 BehaviorSubject 实例时传递默认值,第二次通过在 BehaviorSubject 实例上调用 .next 方法传递的值。

我回答你的问题了吗?

如果没有,请提供代码片段,以便我们更好地理解问题。


推荐阅读