jQuery限制同时AJAX请求的数量

Jus*_*tin 14 javascript ajax jquery

所以我想要触发一系列AJAX事件,但是我想将同时发出的请求数限制为5,并将其余请求排队.例如,我有以下内容:

 $("div.server").each(function() {
     $.ajax(....);
 });
Run Code Online (Sandbox Code Playgroud)

所以这个类可能有100个div server,但我想在任何给定时间只运行5个请求.一旦请求完成,它应该继续下一个.

做这个的最好方式是什么?

Thi*_*ter 6

最好的方法是让浏览器处理它.通常,浏览器已经具有每主机连接限制,因此如果存在太多,它们将自动对连接进行排队.

但是,我会考虑更改API,以便从多个元素中获取日期,并返回多个元素的数据 - 即减少必要的HTTP请求的总数.


Ate*_*ral 5

使用一个名为queueRequestand 的函数将所有请求参数推入队列checkQueuecheckQueue检查队列中是否有项目以及活动请求数是否少于5。如果满足这些条件,它将从队列中弹出一个请求并将其转换为真实的AJAX请求。然后,它将done处理程序附加到请求,以减少活动请求计数并进行调用checkQueue