如果只有一个值,BehaviorSubject 会多次命中

BehaviourSubject hit multiple times if there is only one value

我在共享服务中使用了 behaviorSubject 来获取当前值,同时单击 button.It 按预期工作,但有时 behaviorsubject 的订阅块内的 api 调用多次点击。

会出现什么问题??

可能有以下任一原因:

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

我回答你的问题了吗?

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