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

问题描述 投票:0回答:1

我在共享服务中使用了behaviourSubject来获取当前值,同时单击一个按钮。它正在按预期工作,但有时候在behavioursubject的subscribe块内的api调用会多次点击。

会是什么问题?

javascript angular rxjs5
1个回答
2
投票

可能有以下任何原因:

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

我回答你的问题了吗?

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

© www.soinside.com 2019 - 2024. All rights reserved.