首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理大量AJAX请求(> 1000)

如何处理大量AJAX请求(> 1000)
EN

Stack Overflow用户
提问于 2013-11-07 22:09:35
回答 2查看 2.4K关注 0票数 1

我的应用程序正在从客户端的Google联系人API中获取用户的所有Google联系人。这通常导致1-2000个不同的JSON对象。当收到这些信息时,我的应用程序会遍历它们,重新格式化每个联系人对象,然后尝试通过POST请求将重新格式化的联系人对象保存到我的数据库中。这样做的结果是大量AJAX调用(1-2000)在客户端触发,但在其中5-10次调用之后就停止了。处理所有这些AJAX请求或同时保存这么多数据的最佳方法是什么?

下面是我当前代码的摘要版本:

代码语言:javascript
复制
// gContacts.length = 722

$(gContacts).each(function(index, contact) {

         // Reformat each contact object to fit into my database
         var newContact = {}
         newContact.title = // String
         newContact.emails = // Object featuring different emails
         newContact.phone_numbers = // Object featuring different phonenumbers

         // Save to Database via Backbone
                    var newContact = new App.Collections.Contacts()
                    newContact.create({
                        title           : newContact.title,
                        emails          : newContact.emails,
                        phone_numbers   : newContact.phone_numbers
                    }, {
                        success: function (response) {

                        },
                        error: function (model, xhr) {
                            var errors = $.parseJSON(xhr.responseText).errors
                            console.log(errors)
                        }
                    }) // End .save
}); // End of .each()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-07 22:14:48

我会做一个服务器端的操作,需要一个完整的联系人对象列表。然后在客户端,只需格式化它们并将它们全部添加到数组中,一旦完成,就发送数组。你这样做会产生很多不必要的网络开销。

票数 7
EN

Stack Overflow用户

发布于 2013-11-07 22:17:12

大多数现代浏览器都将同步请求限制为6 per domain。上述请求被阻塞,直到其中一个活动请求完成,为队列中的下一个请求释放一个连接。如果活动请求需要足够长的时间(读“太长”),那么挂起的请求就会超时,就像您看到的那样。

要正确处理这一问题,您确实需要提交自己的请求管理代码。只在浏览器处理的同时发出尽可能多的请求。当请求完成、错误退出或超时时,发出下一个请求。这需要维护一个挂起请求的队列,并准确地检测请求何时完成或完成,但应该做到这一点。

您可能遇到的一个问题是,您的POST请求将与服务器上的所有其他请求竞争。例如,您可能已经注意到或者没有注意到,如果您打开另一个页面到您的网站,而这些帖子请求正在通过网络,您的网站从来没有加载,或加载非常缓慢。

正如其他人所说,将这些更新批次到单个请求中可能是一个更好的解决方案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19847705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档