javascript - 如何使用 angularjs 刷新从 REST 服务器检索的实时数据?

标签 javascript ajax angularjs rest

我想使用 angularjs 从 REST 后端服务器检索表数据。数据每秒都在变化。我想使用 angularjs 来刷新实时变化的数据。如何才能做到这一点?我是否强制 angularjs 定期进行 ajax 调用来刷新数据显示?

最佳答案

是的,对于 REST,除了轮询之外没有其他方法。要在浏览器 View 中刷新数据本身,您可以在服务中使用 $rootScope.$apply() (我假设您正在使用服务来获取数据),首先您必须注入(inject)当然是 $rootScope 的依赖。

编辑 实际上,您不应该使用 $rootScope.$apply(),因为它可能会导致丑陋的 $digest in Progress 错误。而是使用

$timeout(function(){
  // set data here...
})

如果您对轮询不满意并且您已经对后端进行了编程或准备对其进行更改,则改进提示为: 尝试使用WebSocket:

  • 它摆脱了轮询,因为这样您的浏览器可以直接与服务器通信。
  • 它的开销更少。
  • 主要浏览器都支持它,您可以使用具有后备机制的库,例如 SocketIO

然后,当数据可用时,服务器始终可以立即推送数据。服务器端实现取决于您使用的后端,但现在大多数后端框架/服务器也支持 websockets。

关于javascript - 如何使用 angularjs 刷新从 REST 服务器检索的实时数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21679437/

相关文章:

javascript - JS、 Angular 、AJAX : how to mix those three?

javascript - Angular 监控 DOM 更改超出 Angular 范围

javascript - 如何计算字符串长度以及如果长度大于 X 则删除 X 个字符 - JavaScript

javascript - jQuery `.val` 报告选择的值,未选择任何选项

javascript - 如何使用纯 JavaScript 获取 div 内图像集的 src 值?

javascript - 无法从本地主机通过 JavaScript 调用 API

jQuery Ajax 成功消息显示一个大 HTML 文件

javascript - 在 typeahead-on-select 之后关注其他输入 angular-ui-bootstrap

javascript - Ember.js 和 connectOutlet 模板上下文问题

AJAX XML 无法在带有 Web-Works 或 Phonegap 的 BlackBerry 上运行