jQuery& Javascript - 通过对象的属性慢慢循环

时间:2013-12-21 17:07:14

标签: javascript jquery object timing

假设我有这段代码:

var a = ["a", "b", "c"];
a.forEach(function(entry) {
    setTimeout(function() { 
        console.log(entry); 
    }, 1000);
});

等待1秒,然后立即记录abc。我想等待1秒,记录a,再等一下,记录b,等待第三秒,记录c

如何执行for循环以使每个循环花费一秒钟,并且以下循环在第二个循环启动之前不会启动?

3 个答案:

答案 0 :(得分:2)

您可以使用setInterval()clearInterval()完成任务。

尝试,

 var xCnt = 0;
 var a = ["a", "b", "c"];

 var xInterval = setInterval(function () {
     console.log(a[xCnt]);
     xCnt += 1;
     if (xCnt == a.length) {
         clearInterval(xInterval);
     }
 }, 1000);

DEMO

答案 1 :(得分:0)

试试这个:

var i = -1;
var int = setInterval(loop, 1000);

function loop(){
  if( i >=0 && i < a.length){
    console.log(a[i]);
    i++;
  }
  else{ clearInterval(int);}
}

答案 2 :(得分:0)

尝试将setTimeout乘以forEach中的index参数,如下所示:

var a = ["a", "b", "c"];
a.forEach(function(entry, index) {
    setTimeout(function() { 
        console.log(entry); 
    }, 1000 * (index + 1));
});

在这里演示:http://jsfiddle.net/tjnicolaides/A8rvX/