如何限制angularjs中的$ http请求?

Tro*_*roy 7 javascript ajax angularjs

我正在使用angularjs为数据导入器构建UI.角度应用程序将通过输入数据源(电子表格或其他)进行处理,并将GET/POST发送到API以在服务器上创建/更新记录并检索更改等.

如果用户正在导入数千条记录,我可能不希望一次打开数千个ajax调用(而不是Angular能够在第一次完成之前发送所有请求).我的想法是添加某种连接池,以便它可以在一次收缩为仅10或50个左右的Ajax调用.

angular已经有一个内置的限制ajax调用的方法吗?我知道我可以建立一个没有太多的麻烦,但我不想重新发明轮子,如果有已经华而不实的东西在那里.任何人都可以推荐任何工具/插件吗?我知道jquery有一些,但我希望尽可能避免jquery这个项目.

Tro*_*roy 4

在进一步调查这个问题时,我发现,根据这个问题这个页面,浏览器会自动将同一服务器的http请求限制在6到13个并发请求之间,并且它们会对其他请求进行排队,直到其他请求完成。所以,显然,不需要采取任何行动,我可以让我的代码飞起来。

我查看了angular-http-throttler(由 nathancahill 建议),但是(1)它似乎重复了浏览器本身已经在做的事情,并且(2)它(当前)似乎没有处理错误情况的机制,因此,如果服务器没有响应,或者这是一个错误的请求,它不会减少请求计数,从而永久堵塞其队列。

如果处理大量数据,让浏览器一次排队太多请求仍然会导致内存/性能问题。我研究了在 javascript 中创建固定长度队列的各种技术,当队列点可用时,它可以触发回调,但是 javascript 的非阻塞性质使得这样的队列变得棘手和脆弱......希望,我不需要朝那个方向发展(我不处理那么多数据),浏览器的限制对我来说就足够了。