我需要重写一些有一些同步问题的javascript代码。我正在使用jquery 1.7并调用一个名为GenerateData()的方法,该方法调用$ .ajax成功并且失败回调。
GenerateData()调用webservice来检索传递给成功回调的记录列表,成功回调又生成磁盘上的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
});
如果您有两个异步功能需要等待才能运行代码,这是一种方法。