2013-08-29 104 views
0

我需要重寫一些JavaScript代碼,它有一些同步問題。我正在使用jquery 1.7並調用一個名爲GenerateData()的方法,該方法調用了$ .ajax,成功和失敗回調。延遲執行,包括成功回調

GenerateData()調用Web服務來檢索傳遞給成功回調的記錄列表,該成功回調進而生成磁盤上的xml數據文件。當調用成功時,xml文件將與pdf模板合併以創建pdf文檔。現在發生的事情是在導出xml文件之前合併pdf。我嘗試通過使用.when(GenerateData)/。然後(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 
}); 

如果您有需要,以運行等待兩個異步功能你的代碼是這樣做的一種方式。