如何在for循环中使用setInterval()

时间:2016-12-02 07:23:44

标签: javascript jquery

请在下面找到我的代码。

for (i= 0; i < region.length; i++) {
                    point = region[i];
                    animation = setInterval(function () {
                     ..........
                    }, 12);
                }

我希望在i值从0变为1之前执行setInterval中的代码。但是目前在仅执行for循环之后,setInterval方法中的代码正在执行。有没有办法达到我的要求。

3 个答案:

答案 0 :(得分:2)

在for循环中使用闭包:

(function(i) {
  setInterval(function() {
    console.log("inside setinterval" + i)
  }, 10);
})(i)

希望这能解决您的问题

答案 1 :(得分:0)

您需要的异步循环:

var len = region.length;
var i = 0;
var animate = function(){
    setTimeout(function () {
        point = region[i];
        //do something..........
        if (i++ < len) animate();
    }, 12);
};

答案 2 :(得分:0)

您应该使用递归来满足此类要求。此外,您应该使用setTimeout作为setInterval将永久运行(直到页面存在),直到您清除它为止。

&#13;
&#13;
var i = 0;
var MAX_COUNT = 10;
function doSomething(str){
  console.log(str);
  processData();
}

function initSetTimeout(callback){
  setTimeout(callback, 1000)
}

function processData(){
  if(++i<MAX_COUNT)
    initSetTimeout(doSomething.bind(null, i))
}
processData()
&#13;
&#13;
&#13;