javascript在循环中显示延迟

时间:2010-07-19 12:54:16

标签: javascript settimeout

简单示例:

for (var i = 0; i < 10; ++i) {
  console.log(i); // <--- should be show with delay in 300ms 
}

简单的setTimeout使用当然不起作用......我猜应该使用闭包..

3 个答案:

答案 0 :(得分:6)

编写递归函数很简单:

function display(i)
{
  if (i == 10) return;    
  setTimeout(function(){ console.log(i); display(i+1); }, 300);
}

答案 1 :(得分:4)

应该做的工作:

for (var i = 0; i < 10; ++i) {
  (function(i) {
     setTimeout(function(){console.log(i);}, i*300);
  })(i);
}

答案 2 :(得分:3)

您可以使用setInterval,如下所示:

var i = 0;
var id = setInterval(function(){
    if (i == 9) clearInterval(id);
    console.log(i);
    i++;
}, 300);

此处示例http://jsfiddle.net/MLWgG/2/