我正在构建一个与我的后端服务器通信的简单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:
POST
请求。$scope.results
。其余部分将由摘要循环完成,ng-repeat
将确保我在屏幕上看到它们。
所以我唯一的问题是如何在接收响应数据时访问它?
顺便说一下,如果你有任何建议以另一种方式做到这一点,我会很高兴听到,只要它很简单......它真的是一个简单的用户界面,这里不需要任何先进的。非常感谢。
答案 0 :(得分:2)
这是不可能的,因为HTTP请求的规范不提供此功能。 您将不得不发出多个请求(实现类似"分页")或尝试Websockets(稍微复杂一些)
但是没有"流动"像你描述的那样。客户说"嘿服务器,给我数据" - 然后服务器计算所有需要的数据 - 然后服务器以原子方式响应整个数据 - 而不是一步一步。
答案 1 :(得分:0)
如果后端支持,您只能获得多部分结果。我见过的一大块json的唯一行为是,它一次性给你所有的东西,而且你不会一次得到碎片。但是如果你可以修改后端来做这件事,那么你可以做一些事情。