使用BehaviorSubject的getValue()是否为不良实践?求澄清两种对立观点
关于BehaviorSubject中
getValue()使用的观点澄清 Ben Lesh与Angular University在BehaviorSubject的使用上持有对立观点,我对此感到困惑:Ben Lesh本人明确表示,在BehaviorSubject上使用getValue()是严重的代码异味。
他曾提到:
从Observable/Subject中获取值的唯一正确方式是使用subscribe!
如果你使用getValue(),就是在声明式范式中采用命令式操作。它只是一个应急方案,但99.9%的情况下你都不应该使用getValue()。
但在Angular University的相关内容中,我看到:
Subject有一个特性使其无法用于构建可观察数据服务:如果我们订阅它,无法获取最后一个值,必须等待应用的某个部分调用
next()。
这在应用启动阶段会引发问题,此时应用仍在初始化,并非所有订阅者都已注册,例如并非所有async管道都完成注册,因为部分模板尚未初始化。
解决方案是使用BehaviorSubject,借助getValue()让BehaviorSubject成为可观察数据服务的核心。
能否有人澄清这两种明显对立的观点?
请注意,我并非寻求主观意见。基于RxJS的数据服务是状态管理的标准方式,我仅请求澄清这一对立点。
内容的提问来源于stack exchange,提问作者lukasniessen
相关产品推荐
相关产品推荐

