【问题标题】:BehaviourSubject hit multiple times if there is only one value如果只有一个值,则 BehaviorSubject 多次命中
【发布时间】:2019-03-19 08:58:39
【问题描述】:

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

会有什么问题??

【问题讨论】:

标签: javascript angular rxjs5


【解决方案1】:

可能有以下任一原因:

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

我回答你的问题了吗?

如果不是,请提供代码sn-p,以便我们更好地理解问题。

【讨论】:

  • 非常感谢您的重播。我没有取消订阅问题所在的行为主题
猜你喜欢
  • 2018-11-18
  • 2020-03-15
  • 2015-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 2015-01-04
  • 2015-01-04
相关资源
最近更新 更多