2013-08-29 97 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 
}); 

如果您有需要,以运行等待两个异步功能你的代码是这样做的一种方式。