Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-在循环中每x次迭代执行一次_Javascript_Arrays_Google Maps_For Loop - Fatal编程技术网

Javascript-在循环中每x次迭代执行一次

Javascript-在循环中每x次迭代执行一次,javascript,arrays,google-maps,for-loop,Javascript,Arrays,Google Maps,For Loop,我正在使用GoogleMapsAPI,它限制每秒10个请求。我希望每10个请求都有一个短暂的延迟 for (var i = 0; i < myRequests.length; i++) { // pause every 10 iterations } for(var i=0;i

我正在使用GoogleMapsAPI,它限制每秒10个请求。我希望每10个请求都有一个短暂的延迟

for (var i = 0; i < myRequests.length; i++) {
   // pause every 10 iterations 
}
for(var i=0;i
我的数学不好。。。我如何知道何时我达到10次迭代以完成某项任务?

(函数循环(z)){
(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);
对于(变量i=0;i<10;i++){ //使用myRequests[z] log(myRequests[z]); z++; if(z==myRequests.length) 返回; } setTimeout(函数(){loop(z)},1000); })(0);
(函数循环(z){
对于(变量i=0;i<10;i++){
//使用myRequests[z]
log(myRequests[z]);
z++;
if(z==myRequests.length)
返回;
}
setTimeout(函数(){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)
    }
var指数=-1;

对于(var i=0;i创建一个存储请求的数组,并使用该数组:

    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)
    }
var指数=-1;
for(var i=0;iLops不能等待
“等待”的唯一方法是使用超时,不幸的是,在这种情况下,超时是异步的,因此它们在循环中是无用的,因为循环无论如何都会继续

相反,您需要使用递归函数

数学部分 我们可以通过使用模运算符(
%
)来保存一组逻辑,以获得当前递增计数的剩余部分除以要等待的拆分。如果剩余部分为0(当前计数是拆分的倍数),请等待请求的时间

例子
函数日志(out){document.body.innerHTML+=out;}
函数重复(计数、分割、限制、等待){
var args=参数;
如果(++count循环不能等待
“等待”的唯一方法是使用超时,不幸的是,在这种情况下,超时是异步的,因此它们在循环中是无用的,因为循环无论如何都会继续

相反,您需要使用递归函数

数学部分 我们可以通过使用模运算符(
%
)来保存一组逻辑,以获得当前递增计数的剩余部分除以要等待的拆分。如果剩余部分为0(当前计数是拆分的倍数),请等待请求的时间

例子
函数日志(out){document.body.innerHTML+=out;}
函数重复(计数、分割、限制、等待){
var args=参数;

如果(++count非常有趣的方法!这会使用大量CPU资源还是冻结其他javascript?这取决于您在循环中使用的代码。如果您的代码进行一些异步调用,我认为您不会注意到UI端的任何内容。非常有趣的方法!这会使用大量CPU资源还是冻结其他javascript?这取决于如果你的代码进行了一些异步调用,我认为你不会注意到UI端的任何东西。