Vla*_*tea 7 javascript rxjs angular
这就是我的问题的要点。假设您有一个处理 2-3-4-10 个操作的服务。为了在多个组件中进行交流,您有 2-3-4-10 个主题。
那么,是最好有 1 个主题,然后传入一个对象来标识它所涉及的操作,并在您的订阅中进行过滤……还是有很多主题并单独订阅?
多少科目太多?他们或多或少在整个过程中同时保持活跃。
从某种意义上来说,我有点好奇,而不是我自己的用例以及它是否可以做得更好。
我开发的大型角度应用程序使用数百个甚至数千个主题(Subject、BehaviourSubject、ReplaySubject、AsyncSubject)。
使用多个主题是否会影响性能?
对此,我想说主题并不重要,因为它们只占用内存空间。重要的是附加到它们的管道,它将它们放入 CPU 的计算队列中。这取决于管道本身,而不是主体。您可能有一个连接到长计算重管道的单个主题,如果操作不当,会减慢您的程序速度,因为 javascript 在单个执行线程上运行(您可以使用 Web Worker 来避免此问题)。
因此,如果我们谈论您的应用程序的“性能”,那么主题的数量在这里无关紧要。管道决定了您的应用程序是否缓慢。即,数据沿着管道移动并让操作员对其进行操作。
StackBlitz 单管道的计算量很大,可以证明我的观点。
是否最好有 1 个主题,然后传入一个对象来标识它所涉及的操作,并在您的订阅中进行过滤?
我想说这更多的是一个设计决策,让信息总线(“单个主题”)传递所有数据,而不是将它们分解成各自的流。如果您的数据是互连的,这意味着您的事件相互依赖,并且它们在流中出现的顺序很重要(例如导航事件:开始、执行、结束等),这可能会很方便。
如果开发人员使用一个巨大的垃圾箱将所有数据放入而不是将其分解为各自的流,我会很不高兴。即,如果我有一个用户对象、公司信息和通知,我希望它们具有关注点分离,并且不通过总线系统(单个主题)传递,而是通过不同的服务传递,有自己各自的主题和管道。
多少科目太多?他们或多或少在整个过程中同时保持活跃。
如果您正在做琐碎的地图和过滤,那么不必担心您使用了多少主题。担心您的数据流是否具有逻辑/后勤意义,以及它们的结构/竖井是否正确。
StackBlitz 程序结合了 100 万个行为对象来证明我的观点。
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |