2013-08-15 5 views
1

나는 내 자신의 슬라이드 쇼를 제작하고 있습니다. 각 반복 사이에 관찰 가능한 일시 중지와 함께 객체의 멤버를 반복하고 싶습니다. setInterval을 사용javascript : 어떻게 느린 ... for 루프를 만들 수 있습니까?

, 나는이 함께 왔어요 :

for (key in ob) { 

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

     ) 

} 

그러나이 작동하지 않습니다. 덤프는 키/값 쌍을 즉시 로깅합니다. 여기서 예상 할 수있는 것은 각 작업 사이에 간격이 있다는 것입니다.

각 작업 사이에 일시 중지를 반복하려면 어떻게해야합니까?

답변

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); 
+0

+1 모든 키가 처리 된 경우 간격을 지울 수 있습니다. – insertusernamehere

0

예를 들어 타임 아웃을 불러 자기 만들기 :

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

    slowLoop(); 
    }, 2000); 
}