Angular 2 “实时”更新对象。

Posted

技术标签:

【中文标题】Angular 2 “实时”更新对象。【英文标题】:Angular 2 Updating objects in “real time.” 【发布时间】:2016-08-28 14:59:14 【问题描述】:

您好,我想总结一下如何更新表格 angular 2。

这是我所拥有的: 后端:快递/MongoDB。更新通过外部应用程序输入数据库 数据:90% 的数据将是静态的。每秒更新 10% 的数据。

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

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

关于数据更新的其他问题

    Angular 2 的 Observables – 是否仅在客户端拉取数据时才使用 observables?或者您可以在将数据推送到客户端时将其与套接字一起使用。 (所有在线示例都使用带有 http 请求的 observables) 您可以使用 Socket IO 来更新对象还是仅用于新对象?每个示例都是一个聊天应用程序。 使用 http 请求时,如何设置请求数据的频率? (一些在线示例使用循环,但这似乎是错误的。)

【问题讨论】:

【参考方案1】:

    Observables 是基于事件的,因此它们可以用来接收来自服务器的事件,利用 Web 套接字。看看这篇文章(“基于事件的支持”部分):

    https://jaxenter.com/reactive-programming-http-and-angular-2-124560.html

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

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

    查看这个问题了解更多详情:

    Convert a plain string[] into a Observable<string[]> and concat it to another Observable<string[]> using RxJS 5

    如果要按时间间隔拉取,可以利用interval 方法:

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

【讨论】:

以上是关于Angular 2 “实时”更新对象。的主要内容,如果未能解决你的问题,请参考以下文章

前端小白之每天学习记录----angula2--

@angular-cli 安装失败,请求被弃用@2.88.2:请求已被弃用(mac)

Angular 2:啥使服务成为“外部”角度区域?

Angular 2 Architecture Overview

通过 CLI 创建 Angular 2 项目的问题

Angular 2 单元测试错误:无法解析“RequestOptions”的所有参数