使用javascript延迟for循环

时间:2014-12-12 11:58:19

标签: javascript for-loop delay

我想延迟一个" for循环"有一段时间,但不知道该怎么做。

例如。让我们说这个" for循环"从0到8运行,每次运行后应该延迟2 sek。

for (var i=0; i<8; i++{
  do something...
  wait for 2 sek. and go on with i=i++;
}

3 个答案:

答案 0 :(得分:8)

你必须这样:

function jsHello(i) {
    if (i < 0) return;

    setTimeout(function () {

        alert("Hello " + i);

        jsHello(--i);

    }, 2000);
}

jsHello(5);

function jsHello(i) {
    alert("Hello " + i);

    if (--i > -1) {
      setTimeout(function () { jsHello(i); }, 2000);
    }
}

jsHello(5);

答案 1 :(得分:2)

javascript没有等待命令。获得此行为的方法是使用 setTimeout

for (var i=0; i<8; i++{
   do_something(i);
}

function do_something(j) {
  setTimeout(function() {
      tasks to do;
  }, 2000 * j);
}

每次调用函数do_something()时,它都会执行&#34;要执行的任务&#34; 调度2000 *毫秒。

答案 2 :(得分:2)

要解决此任务,您必须使用闭包 - 立即调用在i作为参数的每次迭代时调用的函数,并在此函数内调用setTimeout。在这种情况下,您传递的参数将存储在作用域中,并可用于超时回调:

for (var i=0; i<8; i++) (function(t) {
  window.setTimeout(function() {
   //do anything with t 
  }, t*2000)
}(i))