Angular$http-在接收响应数据时对其进行处理

Angular $http - process response data while receiving it

本文关键字:处理 数据 响应 http- Angular      更新时间:2023-09-26

我正在构建一个与后端服务器通信的简单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秒的计算时间。

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

UI:

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

剩下的将由摘要循环完成,ng-repeat将确保我在屏幕上看到它们。

因此,我唯一的问题是,在接收响应数据时,如何访问响应数据?

顺便说一句,如果你有任何用另一种方式做的建议,我很乐意听到,只要它很简单。。。它实际上是一个简单的UI,这里不需要任何高级功能。

非常感谢。

这是不可能的,因为HTTP请求的规范没有提供此功能。您要么必须发出多个请求(实现类似"分页"的功能),要么尝试Websockets(有点复杂)

但没有你所描述的"流动"。客户端说"嘿,服务器,给我数据"——然后服务器计算所有需要的数据——然后服务器用整个数据进行原子响应——而不是一步一步。

只有后端支持才能获得多部分结果。我在json块上看到的唯一行为是,它一次给你所有的东西,而且你不会一次得到碎片。但是,如果你可以修改后端来做到这一点,那么你就可以做碎片。