JavaScript  for循环中要写一个定时器来获取一个状态,然后通过状态来判断是否执行下一次循环for(var i=0;i<10;){
setInterval(function(){
var = a
})
i++
}我怎么才能拿到这个a 后再来执行下一次循环,
 因为for循环执行完毕后,才执行定时器,所以我拿不到这个值来判断。很苦恼怎么中途停住循环。。

解决方案 »

  1.   

    定时器只是定时开启一个新的线程,不会暂停for循环。
    所以不能用for循环,要用函数递归。(function f(i) {
    var a;
    if (++i<10)
    setTimeout(function(){f(i)}, 500);
    })(0);
      

  2.   

    额,个人觉得一直新建定时器不清理是不好的,会造成内存泄漏的。不知道你的功能是需要什么,但定时器放for循环里面貌似不太好呢。可以在外面写定时器,然后那个a变量变成全局变量。只要那个a的值一变,for循环的条件a生效的话就执行下面的代码。你看看这个思路行不行