javascript - Angular $http - 在接收响应数据时处理它

标签 javascript angularjs json http

我正在构建一个与后端服务器通信的简单 UI。 UI 向服务器发送要处理的 URL,服务器将返回结果列表。

关于结果,每个结果都需要时间来计算,但我仍然想在 UI 中显示传入的结果,甚至可能在结果集上使用 ng-repeat ,该结果将更新为正在从服务器接收结果。

问题是,Angular 的 $http 服务返回的 promise 只能处理成功和失败状态。

我想知道是否存在某种可以运行回调函数的“持续”状态。

例如, 结果是包含结果数组的 JSON:

{
  results: [
    {prop1: val1, prop2: val2}, // result 1
    {prop1: val1, prop2: val2}, // result 2
    {prop1: val1, prop2: val2}, // result 3
    {prop1: val1, prop2: val2}  // result 4
  ]
}

想象一下,在每个结果准备好在响应中发送之前,需要 5-6 秒的时间来计算。

所以,想要的流程和行为是这样的:

用户界面:

  1. 发送包含服务器所需的所有详细信息的 POST 请求。
  2. 在收到的每一行中,将该行中包含的结果推送到 $scope.results

其余部分将由摘要循环完成,ng-repeat 将确保我在屏幕上看到它们。

所以我遇到的唯一问题是如何在接收响应数据时访问它?

顺便说一句,如果您有任何建议以其他方式做到这一点,我很高兴听到,只要它很简单......它确实是一个简单的 UI,这里不需要任何高级内容。

非常感谢。

最佳答案

这是不可能的,因为 HTTP 请求的规范不提供此功能。 您要么必须发出多个请求(实现“分页”之类的东西),要么尝试 Websockets(稍微复杂一点)

但是没有像你描述的那样的“流程”。客户端说“嘿服务器,给我数据” - 然后服务器计算所有需要的数据 - 然后服务器以原子方式响应整个数据 - 而不是一步一步。

关于javascript - Angular $http - 在接收响应数据时处理它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34664966/

相关文章:

javascript - 长度限制小数点前 10 位到小数点后 2 位(仅包含数字)的正则表达式?

javascript - 包含的 Javascript 页面的路径

javascript - 单选按钮 - 未选择任何选项

javascript - 如何从 ul li 获取单独的值

c# - 创建特定格式 Json 的正确方法

java - 如何将 JSONObject 的元素转换为单个元素数组?

angularjs - 等待 $asyncValidators 提交表单

angularjs - Angular Hash 与 Hashbang

javascript - 标签上的 Angular.js ng-click 事件触发两次

javascript - 在 JSON 中查找多次出现的特定值