gpt4 book ai didi

angular - 总是使用 BehaviorSubject 而不是 Subject (RxJs\Angular) 有什么缺点吗?

转载 作者:太空狗 更新时间:2023-10-29 17:32:21 25 4
gpt4 key购买 nike

我正在从事一个项目,其中部分代码库非常自由地使用 BehaviorSubject。在大多数情况下,在没有初始状态或需要在第一个显式“onNext/emit”之外设置初始值时使用。

我很难确定这是否有任何缺点?另外,如果不是,为什么不是每个人都总是使用 BehaviorSubject(甚至在没有参数的情况下构建)而不是标准的 Subject?

提前致谢!

最佳答案

除了初始值之外,BehaviorSubject 与 Subject 完全不同:它也像 ReplaySubject(1)。这意味着新订阅者将始终获得同步发出的最后(或初始)值。使用主题,您只会获得订阅后发生的排放量。

因此,如果您想在服务中存储数据,BehaviorSubject 通常是一个不错的选择。另一方面,Subject 可能更适合向订阅者发送事件。

换句话说,当您不关心过去时,请使用 Subject。


就初始值而言,不管这些影响如何:如果你不需要,就不要使用。为什么?因为。我的意思是你也可以随时写

var x;
x = 5;

代替

var x = 5;

但是……你为什么要这么做?

不要发出订阅者需要努力忽略的事件。一个典型的 Angular 案例是使用一个 Subject ,你在 ngOnDestroy 中发出 + complete 这样你就可以使用 takeUntil 来限制组件中的订阅。如果它是一个 BehaviorSubject,它就不会工作。

关于angular - 总是使用 BehaviorSubject 而不是 Subject (RxJs\Angular) 有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49504713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com