Paf*_*low 2 javascript rxjs angular
我有一个获取 BehaviourSubjects 的角度 (9) 组件。我从许多这样的来源学习到在显示可观察内容时使用async-pipe (而不是在 ngInit 中订阅它)。还有一个技巧,使用*ngIf*withas可以避免一直重复。但既然它们毕竟是行为主体,我可以简单地做
<div>{{behaviourSubject.getValue()}}</div>
Run Code Online (Sandbox Code Playgroud)
管他呢。实际上,对我来说,使用“异步”似乎更干净,并且实际上会导致更少的问题。但我不确定这是一个好的模式还是有严重的缺点?
我建议您参考 Ben Lesh(RxJS 的作者)对此主题的回答
99.9% 的情况下你不应该使用 getValue()
造成这种情况的原因有多种...
OnPush。不使用它会使您的应用程序变慢,因为 Angular 会不断尝试将该值与缓存的视图值同步。在你的情况下,它甚至需要getValue先调用该函数。getValue.getValue,我什至认为BehaviourSubject,是没有必要的,因为你可以通过仅在另一个源 Observable 上使用可管道运算符来表达大多数 Observables。唯一真正需要主题的地方是当您需要将其他不可观察的事件转换为可观察的事件时。虽然不使用它可能看起来更干净async,但实际上您正在将艰苦的工作转移到 Angular,Angular 需要弄清楚何时应该调用getValue()。