观察的,主题& BehaviorSubject
Difference Between Observable and Subject
如果你所关心的是数据检索,然后DeborahK的答案是非常正确的。通常情况下,我会轻描淡写地说,HTTP请求是一种标准的可观察事件,这意味着请求会退出,返回,返回一些数据,并且不会再次被触发,直到对其进行新的订阅为止。对于大多数可观察的模式,标准Observable
类型是完美的工作。
最简单的考虑方法就是看名字;观察到。如果你所做的只是'获取'数据,那么Observable
就是你想要的。但是,如果您发现需要在实例化后操作数据流,则可能是最合适的。 Subject
和BehaviorSubject
之间的差异在于Subject
必须具有初始值,其中BehaviorSubject
在实例化上被赋予初始值。
Subject
或BehaviorSubject
的用例的一个很好的例子是一个布尔值,在站点中用于告诉应用何时应该可见或不可见模态。由于多个组件可能会改变模态的可见性状态,因此您需要可以更改的BehaviorSubject
,从而触发父组件显示模态。
Subject
的另一个好例子是一个搜索栏,它将内容通告给整个应用程序中的其他组件。这里的关键在于你发布了新的值给应用程序内其他组件/服务要观察的流。
我会说的最后一件事是,从技术上讲,以上所有属于Observable
的类别。我认为这是很多混乱发生的地方。
数据推
我注意到你的问题的另一件事是,好像你实际上是试图解决的一个问题,是不是一定角度范围内可解本身。如果您的“后端”中有非常动态的数据,并希望将其推送到您的前端,那么您可能需要查看一个websocket套接字服务器。它听起来比它更复杂,但本质上它允许您的服务器将数据“推送”到您的应用程序。如果它是安全数据,我建议使用您的服务器推送“可用更新”消息,然后让应用程序安全地为更新的数据发出HTTP请求。不要通过网络套接字发送安全信息。 Here is a great resource适用于在节点服务器内使用Socket IO的websockets,并推送到Angular App。那里有很多东西。
我确实需要观察数据变化。 – user8408326
我在提问的基础上发布文章。想象一下,这篇文章随着时间的推移会返回大量数据。 – user8408326
@deborak我没有做任何特别的数据。通过HTTP检索它,然后将其映射到某个实体,最后使用'ngFor'绑定它。数据会经常改变。 – user8408326