Angular $ http - 处理响应时的流程响应数据

时间:2016-01-07 20:54:45

标签: javascript angularjs json http

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

关于结果,每个结果都需要时间来计算,但我仍然希望在UI中显示传入的结果,甚至可以在结果集上使用ng-repeat,这些结果将在收到结果时更新服务器。

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

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

例如, 结果是包含结果数组的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
  3. 其余部分将由摘要循环完成,ng-repeat将确保我在屏幕上看到它们。

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

    顺便说一下,如果你有任何建议以另一种方式做到这一点,我会很高兴听到,只要它很简单......它真的是一个简单的用户界面,这里不需要任何先进的。

    非常感谢。

2 个答案:

答案 0 :(得分:2)

这是不可能的,因为HTTP请求的规范不提供此功能。 您将不得不发出多个请求(实现类似"分页")或尝试Websockets(稍微复杂一些)

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

答案 1 :(得分:0)

如果后端支持,您只能获得多部分结果。我见过的一大块json的唯一行为是,它一次性给你所有的东西,而且你不会一次得到碎片。但是如果你可以修改后端来做这件事,那么你可以做一些事情。