我一直在阅读有关 jQuery 的延迟,但我不能完全掌握如何使用它们。
我有以下深度嵌套的代码
Repository.Projects.GetStages(function (data) {
var stagesXml = $.parseXML(data.d);
Repository.Projects.GetBenefits(function (data) {
var benefitsXml = $.parseXML(data.d);
Repository.Projects.GetPriorities(function (data) {
var prioritiesXml = $.parseXML(data.d);
Repository.Projects.GetDifficulties(function (data) {
var difficultiesXml = $.parseXML(data.d);
Repository.Projects.GetFactors(function (data) {
var factorsXml = $.parseXML(data.d);
Repository.Projects.GetRatings(function (data) {
var ratingsXml = $.parseXML(data.d);
Repository.Projects.GetProjectRatings(selectedPersonIdEncrypted, passDate, function (data) {
var dataDoc = UTL.Utility.prototype.setDomDocument(data.d);
var xsltDoc = UTL.Utility.prototype.setXslt("Xslt/UserRating/ProjectRatings.xslt");
var html = UTL.Utility.prototype.transform(dataDoc, xsltDoc, [
['stages', stagesXml],
['benefits', benefitsXml],
['priorities', prioritiesXml],
['difficulties', difficultiesXml],
['factors', factorsXml],
['ratings', ratingsXml]
]);
$('#Project', $content).html(html);
});
});
});
});
});
});
});
每个Repository.Projects.*
方法都包含一个异步调用来获取数据。传入的函数是回调,它会在成功时传递结果数据。存储库使用通用函数处理错误,因此我不需要传入错误函数。我需要确保在 xslt 转换之前已调用其中的每一个并返回数据。
所有的方法Repository.Projects.*
看起来像这样
GetStages: function (successCallback) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "DataRepository.asmx/GetStages",
cache: false,
data: JSON.stringify({}),
dataType: "json",
success: successCallback,
error: Repository.FailureCallback
});
}
看来我应该能够重写这个,我只是看不到如何。