我正在构建一个与后端服务器通信的简单 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 秒的时间来计算。
所以,想要的流程和行为是这样的:
用户界面:
- 发送包含服务器所需的所有详细信息的
POST
请求。 - 在收到的每一行中,将该行中包含的结果推送到
$scope.results
。
其余部分将由摘要循环完成,ng-repeat
将确保我在屏幕上看到它们。
所以我遇到的唯一问题是如何在接收响应数据时访问它?
顺便说一句,如果您有任何建议以其他方式做到这一点,我很高兴听到,只要它很简单......它确实是一个简单的 UI,这里不需要任何高级内容。
非常感谢。
最佳答案
这是不可能的,因为 HTTP 请求的规范不提供此功能。 您要么必须发出多个请求(实现“分页”之类的东西),要么尝试 Websockets(稍微复杂一点)
但是没有像你描述的那样的“流程”。客户端说“嘿服务器,给我数据” - 然后服务器计算所有需要的数据 - 然后服务器以原子方式响应整个数据 - 而不是一步一步。
关于javascript - Angular $http - 在接收响应数据时处理它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34664966/