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

标签 javascript angular rxjs5

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

会出现什么问题吗?

最佳答案

可能有以下任一原因:

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

我回答你的问题了吗?

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

关于javascript - 如果只有一个值,BehaviorSubject 会多次命中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55236973/

相关文章:

javascript - 一旦函数继续执行

javascript - 在 IE 8 中看不到 Twitter Feed

Angular 对话框 : No component factory found for DialogModule.

angular - 如何在 TypeScript/JavaScript 中使用 Angular Material 主题颜色?

javascript - 使潜在异步的 RxJS observable 确实是异步的

javascript - 如何在重定向到在 Excel 中自动打开的 Excel 文件后关闭浏览器窗口?

javascript - 如何在页面加载时获取呈现的树数据

angular - 获取 ngComponentOutlet 的引用

angular - RxJs subject.subscribe 方法未按预期工作

angular - RxJS 5 与 Angular 2 : Retry failed Observable but then forward error