【发布时间】:2020-08-08 17:18:57
【问题描述】:
我有这个非常容易理解的 javascript 循环。它本质上是循环调用infoGetter()。但是,问题是它一次调用infoGetter() 20 次。我只希望3 infoGetters() 始终在任何一个时间点工作(除非我们达到了 while 循环条件)。
var min = 1;
var limit = 1000;
var myId = 12345;
while (min < limit) {
var max = min + 50;
infoGetter(myId, min, max);
min = max;
}
function infoGetter(myId, min, max) {
return $.ajax({
type: "POST",
url: "get-info.php",
dataType: "json",
data: {
myId: myId,
min: min,
max: max
},
success: function(data) {
/* to stuff here (not important to this question) */
}
});
}
我希望脚本如何工作:
- 在循环中调用
infoGetter(myId, 1, 51);并在后台等待返回值 - 增加最小值,它调用
infoGetter(myID, 51, 102);并在后台等待返回值 - 增加最小值,调用
infoGetter(myID, 102, 153);并在后台等待返回值
现在,一旦infoGetter() 之一获得返回值,它就会使用新参数再次调用它(因为总是需要同时运行3 infoGetter(),除非它到达while循环条件)。新参数显然是我们更新的新 myId、min、max 值,因为我们正在循环中更改 min 和 max。
3 可以是不同的数字,例如 5。所以我们可以同时运行 5 个infoGetter()。
【问题讨论】:
标签: javascript jquery ajax while-loop concurrency