我正在使用angularjs为数据导入器构建UI。角度应用程序将通过输入数据源(电子表格或其他)进行处理,并将GET / POST发送到API以在服务器上创建/更新记录并检索更改等。
如果用户正在导入数千条记录,我可能不希望一次打开成千上万的ajax调用(而不是Angular能够在第一次完成之前发出所有请求)。我的想法是添加某种连接池,以便它可以被限制为10或50左右的ajax一次调用。
angular是否已经内置了限制ajax调用的方法?我知道我可以毫不费力地建造一个,但如果那里已经有一些东西,我不想重新发明轮子。任何人都可以推荐任何工具/插件吗?我知道jquery有一些,但我希望尽可能避免jquery这个项目。
答案 0 :(得分:3)
在进一步调查中,我发现,根据this question和this page,浏览器会自动将对同一服务器的http请求限制在6到13个并发请求之间,并排队其他请求直到其他请求完成。所以,显然,不需要采取任何行动,我可以让我的代码飞起来。
我查看了angular-http-throttler(由nathancahill建议),但是(1)它似乎重复了浏览器已经在做什么,以及(2)它(目前)似乎没有机制处理错误情况,因此如果服务器没有响应,或者它是一个错误的请求,它不会减少请求计数,从而永久地堵塞它的队列。
如果处理大量数据,让浏览器一次排队太多请求仍会导致内存/性能问题。我查看了在javascript中创建固定长度队列的各种技术,它可以在队列点可用时触发回调,但javascript的非阻塞性质使得这样的队列变得棘手而且脆弱......希望我不需要朝这个方向发展(我没有处理那么多数据),浏览器的限制对我来说已经足够了。