我在共享服务中使用了behaviorSubject来在单击按钮时获取当前值。它按预期工作,但有时behaviorsubject的订阅 block 内的api调用会多次点击。
会出现什么问题吗?
最佳答案
可能有以下任一原因:
- 当您在执行多次的代码块中订阅BehaviorSubject 时,就会发生这种情况。例如,如果您订阅多次执行的 Angular 组件的 ngAfterViewChecked 生命周期钩子(Hook)。
- 您从未取消订阅,但每次应用加载组件时,都会订阅您的行为主题。
- BehaviorSubject 的订阅者总是至少执行一次,因为BehaviorSubject 在创建时需要一个默认参数,并且至少发出一次传递的默认参数,如果你在BehaviorSubject 的实例上只调用一次 .next() 方法,订阅者将执行两次。第一次为创建BehaviorSubject 实例时传递的默认值,第二次为通过在BehaviorSubject 实例上调用.next 方法传递的值。
我回答你的问题了吗?
如果没有,请提供代码片段,以便我们更好地理解问题。
关于javascript - 如果只有一个值,BehaviorSubject 会多次命中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55236973/