我一直在閱讀有關jQuery的延期,但我不能完全理解如何使用它們。使用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.*
方法中包含的異步調用來獲取數據。傳入的函數是回調函數,它在成功時傳遞結果數據。 Repository使用泛型函數處理錯誤,所以我不需要傳入錯誤函數。我需要確保在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
});
}
好像我應該能夠改寫這個,我只是不明白怎麼樣。