2013-07-22 2 views
2

은 :배열의 모든 항목에 setTimeout을 사용하는 방법은 무엇입니까? 다음에서

ko.utils.arrayForEach(cards, function (card) { 
     setTimeout(function() { 
      observableData().saveCard(card); 
     }, 1000); 
    }); 

이것은 배열의 모든 카드 1 초를 대기로되어 있지만, 그냥 배열을 통해 1 개 초 후 폭발을 기다린다. 예상되는 동작을 어떻게 달성 할 수 있습니까?

+2

배열의 각 항목에 대해 1 초를 기다리고 있습니다. 동시에 모든 항목에 대해 타이머를 시작했습니다. 첫 번째 타이머가 발생하면 다음 항목의 타이머를 설정하십시오. 또는 간격을 설정하고 각 콜백을 반복합니다. – Brad

답변

4

당신은 항목의 인덱스를주고처럼 보이지 않는 arrayForEach 때문에 시간 제한

var idx = 1; 
ko.utils.arrayForEach(cards, function (card) { 
    setTimeout(function() { 
     observableData().saveCard(card); 
    }, (idx++) * 1000); 
}); 

를 증가 할 필요가, 당신은

+0

Arun number 1 – SB2055

1
ko.utils.arrayForEach(cards, function (card) { 
    var timeout = setTimeout(function() { 
      observableData().saveCard(card); 
     }, 1000); 
     clearTimeout(timeout); 
    }); 
+0

당신은 세 쌍둥이 또는 무엇인가 – SB2055

+2

hehe 나는 지금 그것을 알아 챘다. .. thats just coincidence –

+0

hehe ......... :) –

1

시도 별도의 인덱스를 유지 관리해야

var timer; 
ko.utils.arrayForEach(cards, function (card) 
{ 
     window.clearTimeout(timer); 
     timer=window.setTimeout(function() { 
      observableData().saveCard(card); 
     }, 1000); 
    }); 
+0

이것이 진짜인가요? – SB2055

관련 문제