我正在使用 angularjs 为数据导入器构建 UI。角度应用程序将处理输入数据源(电子表格或其他)并将 GET/POST 发送到 API 以在服务器上创建/更新记录并检索更改等。
如果用户要导入数千条记录,我可能不想一次打开数千个 ajax 调用(Angular 并不能够在第一个请求完成之前获取所有发出的请求)。我的想法是添加某种连接池,以便可以将其限制为一次仅 10 或 50 个左右的 ajax 调用。
Angular 是否已经具有限制 ajax 调用的内置方法?我知道我可以毫不费力地建造一个,但如果已经有一些光滑的东西,我不想重新发明轮子。有人可以推荐任何工具/插件吗?我知道有一些用于 jquery,但我希望在这个项目中尽可能避免使用 jquery。
在进一步调查中,我发现,根据这个问题 https://stackoverflow.com/questions/561046/how-many-concurrent-ajax-xmlhttprequest-requests-are-allowed-in-popular-browse and 这一页 http://www.browserscope.org/?category=network,浏览器会自动将对同一服务器的 http 请求限制在 6 到 13 个并发请求之间,并且它们会将其他请求排队,直到其他请求完成。所以,显然,不需要采取任何行动,我可以让我的代码飞起来。
我在看角度 http 节流器 https://github.com/mikepugh/angular-http-throttler(由 nathancahill 建议),但是(1)它似乎重复了浏览器自己已经在做的事情,并且(2)它(当前)似乎没有处理错误情况的机制,所以如果服务器没有响应,或者如果这是一个错误的请求,它不会减少请求计数,从而永久堵塞它的队列。
如果处理大量数据,让浏览器一次排队太多请求仍然会导致内存/性能问题。我研究了在 javascript 中创建固定长度队列的各种技术,当队列点可用时它可以触发回调,但是 javascript 的非阻塞性质使得这样的队列变得棘手和脆弱......希望,我不需要朝那个方向发展(我不处理那么多数据),浏览器的限制对我来说就足够了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)