Angular 2“实时更新”对象。

时间:2016-05-03 13:55:59

标签: socket.io angular httprequest observable

您好我正在尝试如何更新表格角度2。

以下是我所拥有的: 后端:express / MongoDB。更新通过外部应用程序提供给数据库 数据:90%的数据将是静态的。每秒有10%的数据更新。

我看过Observables / promises。 HTTP请求/套接字IO,但无法围绕这些概念。

主要问题:我可以使用带有socket.io的observable来更新记录吗?

有关数据更新的其他问题

  1. Angular 2的Observables - 只有在客户端提取数据时才能使用Observables吗?或者,当数据被推送到客户端时,您可以将它与套接字一起使用。 (所有在线示例都使用带有http请求的observable)
  2. 您可以使用Socket IO更新对象,还是仅用于新对象?每个例子都看是一个聊天应用程序。
  3. 使用http请求时,如何设置请求数据的频率? (一些例子在线使用循环,但这似乎是错误的。)

1 个答案:

答案 0 :(得分:5)

  1. Observables是基于事件的,因此它们可用于从服务器利用Web套接字接收事件。看看这篇文章(“基于事件的支持”一节):

  2. 实际上它是新对象,但您可以利用scan运算符来聚合多个事件的内容。

    var obs = (...)
    obs.startWith([])
       .scan((acc,value) => acc.concat(value))
       .subscribe((data) => {
         console.log(data);
       });
    

    有关详细信息,请参阅此问题:

  3. 如果您想按时间间隔提取,可以使用interval方法:

    Observable.interval(3000).flatMap(() => {
      return this.http.get('/some-request').map(res => res.json());
    }).subscribe((data) => {
      console.log(data);
    });