请在下面找到我的代码。
for (i= 0; i < region.length; i++) {
point = region[i];
animation = setInterval(function () {
..........
}, 12);
}
我希望在i值从0变为1之前执行setInterval中的代码。但是目前在仅执行for循环之后,setInterval方法中的代码正在执行。有没有办法达到我的要求。
答案 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
将永久运行(直到页面存在),直到您清除它为止。
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;