【问题标题】:What's the best way to constantly watch for any changes on JSON using Angular?使用 Angular 持续观察 JSON 上的任何变化的最佳方式是什么?
【发布时间】:2015-07-17 21:12:06
【问题描述】:

通过以下代码,我加载了一次 JSON:

$http.get('/data').success(function(mydata) {
    $scope.mydata = mydata;
});

我想观察来自 JSON 的任何更改,然后重新加载新数据,以便更新 $scope 和视图。 我可以使用 JavaScript setInterval 函数每 1 秒重新加载一次,但这似乎有点讨厌。有更好的解决方案吗?也许是用 Angular 本身编写的?

【问题讨论】:

标签: javascript json angularjs angularjs-scope angular-http


【解决方案1】:

我将继续假设您所追求的是 Angular 应用程序中的实时更新。现在有很多不同的选项可以在网络上实现实时更新,但不幸的是 $http 不是其中之一。也不是任何基于 HTTP(协议)的技术,因为它本质上是基于请求/响应的,并且不支持持久连接。

根据您的服务器端技术,您可以查看诸如 Socket.io(用于 Node)或 SignalR(用于 .NET)之类的东西,因为它们在原始 Websocket 之上提供了很好的抽象。还有一些很棒的服务可以让实时网络很容易实现。现在最好的之一叫做Firebase。它们最近被 Google 收购并具有原生 Angular 绑定,因此可以直接在您的控制器范围内使用实时推送通知。

如果您不拥有从中发出请求的服务器,那么不幸的是,您将被困在对计时器进行基于 HTTP 的轮询。请注意不要过于频繁地轮询,因为这可能会影响客户端的性能或超出正在与之通信的后端的 API 限制。

【讨论】:

    【解决方案2】:

    使用$interval 进行长轮询是一种选择

    另一种选择是使用WebSockets 通知客户端数据更新

    【讨论】:

      猜你喜欢
      • 2017-12-11
      • 2023-04-01
      • 2012-12-31
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多