2013-06-13 6 views
1

자바 스크립트 for 루프와 settimeout을 사용하지 않고 특정 AJAX 호출이 완료된 시점을 기준으로 지연을 설정할 수 있습니까? 같은루프 반복을위한 jQuery 지연

뭔가 :

for (var i = 0 ; i < list.length ; i++) 
{ 
    $when('index.jsp').done(function(a1){ 
    alert(i); 
    }); 
} 

아약스 요청이 전송됩니다 말 첫 번째 경고는 첫 번째 Ajax 호출이 완료되면 다음 두 번째 반복 및 경고가 수행된다납니다.

답변

3

나는 다음과 같은 일을해야 생각 :

(function() { 
    var i = 0, end = list.length; 
    function iterate() { 
     $.ajax('index.jsp').done(function() { 
      alert(i); 
      i++; 
      if (i < end) { 
       iterate(); 
      } 
     }); 
    } 
    iterate(); 
})(); 
+0

왜 구문 오류가 발생하는지 확실하지 않습니다! 결말에 뭔가 잘못 됐나? – ComeRun

+0

닫힌 중괄호가 빠졌습니다. – Barmar

+0

감사합니다, 나는 그것을 테스트하려고하지만 어쨌든 반복은 트리거되지 않습니다. 호출해야합니까? 아니면로드가 발생하면 트리거됩니까? – ComeRun

1

쉬운 방법은 당신이 자신을 재귀 적으로 호출 할 아약스 함수에서 콜백을 사용하는 것 계신 달성하기 위해. 그렇지 않으면 Ajax 호출이 비동기이기 때문에 for 루프에서 수행 할 수있는 방법이 확실하지 않습니다.