如果只有一个值,则BehaviourSubject被多次击中

时间:2019-03-19 08:58:40

标签: javascript angular rxjs5

我已经在共享服务中使用了behaviourSubject来获取当前值,同时点击一个按钮,它可以正常工作,但是有时behavioursubject订阅块中的api调用会多次出现。

会是什么问题?

1 个答案:

答案 0 :(得分:2)

可能有以下任何原因:

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

我回答了你的问题吗?

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