【发布时间】:2015-02-09 02:04:13
【问题描述】:
(我的案例适用于 C#、MVC、返回 JSON、得到 jquery、角度),但我希望它适用于更多。
我有一个网站,我的 angular/html/js 通过 Angular 控制器调用 ~7 个服务并异步获取/显示数据(天气、路况等)。其中一些需要比其他时间更长的时间(从 ms 到 ~10s)。我想对我的服务进行一次调用,它会返回所有这些数据 - 但不要等到最后一次调用返回任何东西(10 秒)。
有没有办法进行一次调用,并在我拥有结果时返回结果并相应地显示?我是否需要重复调用具有类似“IsMore=T”的布尔值并再次调用服务? (听起来效率不高)。
理想情况下,我希望保持响应渠道畅通,并保持抽出结果,直到完成。可能吗?
【问题讨论】:
-
您目前是否发出 7 个 HTTP 请求并且只想发出一个请求?
-
是的(对我的服务)——但我不想等到我有最后一个数据 ~10 秒后才显示第一个数据
-
如果您向服务器发出七个异步请求,服务器可以并行处理所有七个请求,并在每个响应可用时返回每个响应。当每个响应到达时,由您的客户做出反应。如果您发出一个请求,那么服务器会发出一个响应,这在所有处理完成之前很可能不会发生。您的服务器代码可以将请求分成七个线程并对其进行处理,但这会不必要地使服务器代码和客户端代码复杂化。除非你能证明网络延迟有问题,否则我会坚持使用七个请求。
-
根据您的描述,我同意 Hobo Sapiens,但如果您确实需要服务器到客户端通道,请查看 SignalR - signalr.net。
标签: javascript json asp.net-mvc angularjs