2012-08-14 2 views
2

컨텍스트

여러 사이트를 Ajax 호출로 업데이트하여 하나의 서버를 절약합니다.첫 번째 루프 이후에 재귀 함수가 중지되었습니다.

Ajax 호출이 완료되면 다시 실행되는 재귀 함수를 만들었습니다.

문제

첫 번째 루프 후에 기능이 중지됩니다.

아이디어가 있으십니까?

코드

var updateSite = function (site) { 
    if (site.status == 'waiting for update') { 
     updateStatus(i, site, 'update in progress'); 

     $.get(site.url) 
      .success(function() { 
       updateStatus(i, site, 'updated'); 
      }) 
      .error(function() { 
       updateStatus(i, site, 'not updated'); 
      }) 
      .complete(function() { 
       updateSite(allSites[i++]); 
      }); 
    } 
}; 

var i = 0; 

updateSite(allSites[i]); 
+0

내가 더 루프를 표시하지 않습니다를?!? – Amberlamps

+0

@Amberlamps - 다음 호출은 .complete 함수에 의해 시작됩니다. –

+0

@LarryK : 감사합니다! 나는 분명히 jQuery에 익숙하지 않다. :) – Amberlamps

답변

5

변경 완성 기능 :

function() { 
    updateSite(allSites[++i]); 
} 
+0

그래, 나도 이것에 동의한다. –

+0

그것은 작동합니다! 정말 고마워. –

0

오류 메시지?

아마 updateSite은 complete로 사용하는 익명 함수가 정의 될 때 아직 정의되지 않았습니다.

이 시도 : 아래

var updateSite; 
updateSite = function (site) { 
    if (site.status == 'waiting for update') { 
     updateStatus(i, site, 'update in progress'); 
.... // everything else the same... 
관련 문제