- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前有一个从初始 ajax 调用中获得的 id 数组,我需要在其中进行后续调用。假设该数组中有 20 个 id。
我现在需要做的是一次只进行 5 个调用,因为我们不想让服务器重载。一旦这 5 个完成,就开始下一个 5。一旦全部完成,我需要 console.log('done');
var ids = [3,5,2,6,7,13,35,27,8,5,3,5,26,57,18,3,42,67];
var results = {};
var ajaxCall = function(id) {
$.ajax({
url: '/url?id=' + id, method: 'GET'})
.complete(function(data) {
results[id] = data;
});
}
最佳答案
您需要使用 setInterval
来检查每个 5
AJAX 调用以及最后一组 5 条记录,clearInterval
如下代码所示。
检查下面的示例,如何在处理每个 Ajax 调用后获取一组 5 Ajax 调用
和 console.log('completed');
。
function make5call()
上述函数将简单地从数组
请求下5个
id
function initTimer()
上面的计时器将检查所有5个Ajax请求
是否已完成,然后启动下一个一组5个请求
,如果全部完成,则clearInterval
var ids = [3, 5, 2, 6, 7, 13, 35, 27, 8, 5, 3, 5, 26, 57, 18, 3, 42, 67];
//var ids = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19];
var results = {};
var length = ids.length;
var j = 0;
var pendingAJAX = 5; // Set of ajax call in one go
var complete = false;
var totalCompleted = 0;
// Ajax request function
var ajaxCall = function(id) {
$.ajax({
url: '/url?id' + id,
method: 'GET'
})
.complete(function(data) {
results[id] = data;
console.log(id);
pendingAJAX--; //After each complete decrement one
totalCompleted++; //Track for completed Ajax
// If all sets are completed and total is also same as your ids
if (complete && totalCompleted == ids.length) {
console.log('completed');
}
});
}
var make5call = function() {
for (var i = 0; i < 5; i++) {
// If all Ajax finished set complete to true
if (j == ids.length) {
complete = true;
}
if (j < ids.length) {
ajaxCall(ids[j]); //request Ajax
j++;
}
}
}
// Timer to check when to call for next 5 request
var initTimer = function() {
var timer = null;
timer = window.setInterval(function() {
// Either all are completed or 5 Ajax complted clear interval
if (pendingAJAX == 0 || complete) {
timer = window.clearInterval(timer);
timer = null;
// If All are not finished yet start timer again
if (!complete) {
pendingAJAX = 5;
initTimer();
make5call();
}
}
}, 100);
}
initTimer();
make5call();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
关于jquery - 一次执行总共 n 个调用中的 5 个 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45973958/
@anubhava 和 @RavinderSingh13 通过这个脚本继续帮助我学习并取得今天的进步。这是我目前所拥有的: ##1st rule with one parameter: $id-- R
我对 sql 比较陌生,并且一直在尝试让一个非常复杂的查询(对我来说)工作一段时间,但我一直在使用节点 postgres 在每个列中获取重复值。通过这个查询,我试图在仪表板上跟踪用户信息、计划信息和电
我的模型表单集甚至没有在 modelformset_factory 中定义“额外”参数,而是在模板中呈现一个额外的字段。我尝试了许多变体,但没有奏效。如果我在命令行上打印表单(模型表单),它只会根据需
我目前正在创建一个包含 81 个按钮的 Ultimate Tic Tac Toe 应用程序。当它是常规井字游戏时,我处理它的方式是为 9 个按钮制作一个 switch 语句。我只是想知道是否为所有 8
我有 20 个下拉框来查询单个表和相同的字段,我编写了以下查询,效果很好。我确信有某种方法可以优化这种重复的下拉框,但我并不知道。 我应该写一个函数并从每个 传递参数吗?
我们的 SonarQube 6.0 实例有一个“sonarqube-6.0/temp/ce”文件夹,其中包含 35.9GB 的数据。该文件夹中最旧的数据已有近 3 个月的历史。下面显示了一段时间内磁盘
redis 中有超过 10 亿个键。 现在我想获取 ALL python 中的键。 partkeys = redisclient.keys("abcd*") 会好的。 但是 keys = redisc
我的本地机器中有一个 Cassandra 1.2 集群,主机经过修改: #cassandra nodes m.y.i.p m.y.i.p (Node 1)<---- s
假设我有一台具有 256gb 内存和 12TB SSD 的机器。索引文档大小为 100TB。我为 Elasticsearch 堆分配了 30.5 GB。剩下的用于 Lucene 和 OS。 我的问题是
我使用 Redis 来缓存数据库插入。为此,我创建了一个列表 CACHE,我将序列化的 JSON 列表推送到其中。在伪代码中: let entries = [{a}, {b}, {c}, ...];
我在 android 中使用如下所述的 View 属性动画器。它在大多数设备上运行良好,但在某些设备上会出现上述错误。它也总是在模拟器中失败。对象动画师也有同样的问题。请注意,如果应用在单个 View
我觉得用python合并所有的json文件并不方便,合并后的文件有30G。 我正在使用 mongoDB 和 nodejs。我填充示例 json 的方式是: var data = require('./
我在 phpmyadmin 表中插入了一行,但是当我运行以下任何命令时它返回: 显示第 0 - 0 行(总共 1 行,查询耗时 0.0008 秒。) SELECT * FROM library_inf
当有 10 个结果时显示 0-9 是什么意思?这导致 mysql_num_rows 出现问题 这是MYSQL: SELECT * FROM `members` WHERE ( LOWER( `Re
当我构建我的 Angular-12 peroject 时,我收到了这个错误: Error: initial exceeded maximum budget. Budget 5.00 MB was no
我有一个升级到 11 的 Angular 应用程序。 我做了一个> ng build --prod我看到了这些信息: √ Browser application bundle generation c
我是一名优秀的程序员,十分优秀!