在循环内循环

时间:2014-05-02 01:23:18

标签: javascript timeout

好吧,所以我需要在循环内部运行超时而不再重新调用循环。内循环NEEDS是超时。

(function loaded() {
for(var i=0;i<100; i++){
  if(!SOMECONDITION){
     setTimeout(loaded, 1);
  }
}
})();

此代码几乎完美无缺,但如果条件不满足,则会调用整个循环。我需要它只能回忆这个循环内部..但是它不起作用。

    for(var i=0;i<100; i++){
(function loaded(i) {
      if(!SOMECONDITION){
         setTimeout(loaded, 1);
      }
})(i);
    }

变量i必须能够在循环中传递。

1 个答案:

答案 0 :(得分:0)

有点复杂,有些人可能会简化,但是......我认为你需要两个函数,一个是将i捕获到一个闭包中,一个是没有参数所以它可以被称为超时。

for (var i = 0; i < 100; i++) {
  (function(i) {
    function loaded() {
      if (!SOMECONDITION) {
        setTimeout(loaded, 1);
      }
    };
    loaded();
  })(i);
};