【发布时间】:2018-01-10 22:29:39
【问题描述】:
假设我们使用*ngFor 将警报呈现到列表中,如下所示:
*ngFor="let alert of alerts | async"
是否可以让alerts 属性成为服务器推送的热可观察对象,并导致包含警报的列表相应刷新?如果是这样,哪种类型的 Observable(s) 适合这种类型的上下文?
【问题讨论】:
-
这就是异步管道的作用——解包一个可观察对象并在收到新数据时更新。你有没有试过这个,它不工作?或者你只是在问你的方法在概念上是否正确?
-
我希望有一个示例,其中
Observable<Alert[]>在ngOnInit()中初始化,但仍与服务器保持联系并被服务器推送,从而导致表自动更新新警报.到目前为止,我看到的所有示例都通过发出新的 http 客户端休息请求来刷新 Observable,用从 http 请求返回的新的冷 observable 替换 observable 引用。在这种情况下,看起来整个表格都必须重新渲染。 -
Angular 是否有办法接收对可观察对象的增量更新,这些更新是热更新(换句话说,它们正在添加到可观察对象的当前状态)而不是替换它,并且它是否也有一个仅呈现更新、添加、删除的方式(我认为这就是 react 所做的......)......可能是一个不同的问题......
-
好吧,react 与不可变状态一起工作,所以它推送整个状态,这正是 rxjs 所做的。我相信它们的工作方式完全相同。通过使用“热”可观察对象,您关闭对对象的引用,并修改该对象,从而打破不变性。这不是世界末日,但在做状态时,人们普遍认为应该尽可能使用不变性。
-
重新阅读您的请求后,听起来您想要一个带有
websocket连接的可观察对象,而不是http 休息调用,对吗?这样,当从服务器发布新数据时,您的 websocket 连接将读取它并更新 observable,而不是每次获取数据时都发出新的 http 请求。我理解正确吗?
标签: javascript angular sockets rxjs