1

独自のスライドショーを作成しています。各反復の間に観察可能な一時停止を加えて、オブジェクトのメンバーを反復処理したいと思います。

setInterval を使用して、私はこれを思いつきました:

for (key in ob) {

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

        ) 

}

ただし、これは機能しません。キーと値のペアを即座にログに記録しますが、各操作の間に間隔があると予想されます。

各操作の間に一時停止を入れて反復を行うにはどうすればよいですか?

4

2 に答える 2

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 );
于 2013-08-15T10:21:57.437 に答える
0

たとえば、自己想起タイムアウトを作成します。

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

   slowLoop();
   }, 2000);
}
于 2013-08-15T10:22:12.700 に答える