gpt4 book ai didi

javascript - Rxjs 主题表现 - 多少算太多?尝试将几个合二为一会更好吗?

转载 作者:行者123 更新时间:2023-12-05 00:39:25 30 4
gpt4 key购买 nike

所以我的问题的要点。想象一下,您有一个处理 2-3-4-10 Action 的服务。并且要在多个组件中进行通信,您有 2-3-4-10 个主题。
那么,最好有 1 个主题,然后传入下一个对象,确定它与哪些操作相关,然后在您的订阅中过滤......还是有很多主题并单独订阅?
多少科目太多了?它们在整个过程中或多或少地同时保持活跃。
在抽象的意义上有点好奇,而不是我自己的用例,以及它是否可以做得更好。

最佳答案

我处理使用数百个甚至数千个主题(主题、行为主题、重播主题、异步主题)的大型 Angular 应用程序。

Is there a performance hit for using many subjects?


对此,我想说主题并不重要,因为它们只占用内存空间。这是您附加到它们的管道,它将它们放入 cpu 的计算队列中很重要。这取决于管道本身,而不是主题。您可能有一个连接到长计算量大管道的单个主题,如果执行不正确,会减慢您的程序,因为 javascript 在单个执行线程上运行(您可以使用网络 worker 来避免这个问题)。
因此,如果我们谈论的是您的应用程序的“性能”如何,那么这里的主题数量是无关紧要的。确定您的应用程序是否缓慢的是管道。即,数据沿管道移动并让运算符(operator)对其进行操作。
StackBlitz single pipe that is computationally heavy to prove my point.

Is it better to have 1 subject, and pass in on next an object identifying which of the actions it relates to, and filter inside your subscription?


我想说这更像是一个设计决策,让信息总线(“单个主题”)传递所有数据,而不是将它们分解成各自的流。如果您的数据是相互关联的,这可能会很方便,这意味着您的事件相互依赖,并且它们在流中出现的顺序很重要(例如导航事件:开始、执行、结束等)。
如果开发人员使用一个巨大的垃圾箱将所有数据放入而不是将其分解为各自的流,我会很不高兴。即,如果我有一个用户对象、公司信息和通知,我希望它们具有关注点分离,并且不通过总线系统(单个主题)交付,而是通过不同的服务交付,拥有各自的主题和管道。

How many subjects is too many? They more or less remain active all at once throughout.


如果您正在做琐碎的 map 和过滤,那么不要担心您使用了多少主题。担心您的数据流是否具有逻辑/逻辑意义,以及它们的结构/孤岛是否正确。
StackBlitz program combining 1 million behavior subjects to prove my point.

关于javascript - Rxjs 主题表现 - 多少算太多?尝试将几个合二为一会更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64251446/

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