javascript:如何为... in循环创建一个慢速

时间:2013-08-15 10:18:45

标签: javascript loops for-in-loop

我正在制作自己的幻灯片。我想迭代一个对象的成员,每次迭代之间都有一个可观察到的暂停。

使用setInterval,我想出了这个:

for (key in ob) {

setInterval(
    function (){
    console.log("Key:", key);
    console.log("Value:", ob[key]);
    }, 2000

        ) 

}

然而,这不起作用。它会立即转储日志中的键/值对,我的期望是每次操作之间会有间隔。

如何在每次操作之间暂停一次迭代?

2 个答案:

答案 0 :(得分:2)

你完全不能这样做。

试试这个:

var keys = Object.keys(ob);
var index = 0;
setInterval( function(){
    console.log( keys[index], ob[keys[index]] );
    index = ( index + 1 ) % keys.length;
}, 2000 );

http://jsfiddle.net/DgAPw/

一个不滚动的示例,但在处理完所有内容后停止:

var keys = Object.keys(ob);
var index = 0;
var timer = setInterval( function(){
    console.log( keys[index], ob[keys[index]] );
    index++;
    if( index >= keys.length ) {
        clearInterval( timer );
    }
}, 2000 );

答案 1 :(得分:0)

创建自召回超时,例如:

function slowLoop(){
   setTimeout(function(){
   // Do something

   slowLoop();
   }, 2000);
}