2013-08-29 2 views
0

일부 동기화 문제가있는 자바 스크립트 코드를 다시 작성해야합니다. jquery 1.7 사용하고 $ .ajax 성공 및 실패 콜백 호출하는 GenerateData() 메서드를 호출하는.성공 콜백을 포함하여 실행 연기 중

GenerateData()는 webservice를 호출하여 success 콜백에 전달되는 레코드 목록을 검색하고 디스크에서 xml 데이터 파일을 생성합니다. 호출이 성공하면 xml 파일이 pdf 템플릿과 병합되어 pdf 문서가 생성됩니다. 현재 XML 파일을 내보내기 전에 pdf가 병합되고 있습니다. .when (GenerateData) /. then (CreatePDF)를 사용하여 문제를 해결하기 위해 노력하고 있는데, 주 ​​함수 (GenerateData 및 CreatePDF)에서 작동하는 것처럼 보입니다. 그러나 성공 콜백을 GenerateData에 추가하면 CreatePDF가 성공 전에 실행됩니다. 콜백이 끝납니다.

콜백 처리기도 연기되어야합니까? 그렇다면 어떻게 코딩해야합니까? 나는 ... 온라인

+0

코드가 필요합니다. –

답변

0

당신이 실행하기 위해 기다릴 필요가 두 개의 비동기 기능이있는 경우 지연된 개체

var myAsyncPromise = new $.Deferred(); //resolved when the xml is done 

var promise = $.ajax({}); //some ajax call 

var createXml = function() { 

    //when this code is run and complete do this 
    myAsyncPromise.resolve(); 
} 
var complete = $.when(promise, myAsyncPromise); 


complete.done(function (data){ 
     //when both async actions are done this code will run 
}); 

을 사용할 수를 구체적인 예를 발견하지 않았습니다 귀하의 코드는 이것을 수행하는 한 가지 방법입니다.

관련 문제