我正在使用每秒限制为 10 个请求的 Google Maps API。我想每 10 个请求有一个短暂的延迟。
for (var i = 0; i < myRequests.length; i++) {
// pause every 10 iterations
}
我的数学不是很敏锐……我怎么知道何时达到 10 次迭代才能做某事?
我正在使用每秒限制为 10 个请求的 Google Maps API。我想每 10 个请求有一个短暂的延迟。
for (var i = 0; i < myRequests.length; i++) {
// pause every 10 iterations
}
我的数学不是很敏锐……我怎么知道何时达到 10 次迭代才能做某事?
(function loop(z) {
for (var i = 0; i < 10; i++) {
//use myRequests[z]
console.log(myRequests[z]);
z++;
if(z===myRequests.length)
return;
}
setTimeout(function(){loop(z)},1000);
})(0);
创建一个存储请求的数组并使用它:
var index = -1;
for(var i=0; i<anArray.length; i++){
if(anArray[i]!=false){
index = i;
break;
}
}
if(index!=-1){
function makeCall(){
//api calls
anArray[index] = true;
}
}else{
setTimeout(makeCall, 1000)
}
“等待”的唯一方法是使用超时,不幸的是,在这种情况下超时是异步的,因此它们在循环中是无用的,因为无论如何循环都会继续。
相反,您将需要使用递归函数。
%
我们可以通过使用模运算符 ( ) 来获得当前递增计数除以您要等待的分割的余数,从而节省大量逻辑。如果余数为 0(当前计数是拆分的倍数),则等待请求的时间量。
function log(out) { document.body.innerHTML += out; }
function repeat(count, split, limit, wait) {
var args = arguments;
if(++count <= limit) {
log([count, '0' + count][+(count < 10)] + ', ');
if(!(count % split) && count < limit) {
log('wait<br>');
setTimeout(function(){
repeat.apply(null, args);
}, wait);
} else repeat.apply(null, args);
} else log('done');
}
repeat(0, 10, 50, 1000);