我有一个时序关键功能,在完成几个Ajax调用之前无法执行。 Ajax调用来自服务器的请求,以获取在初始页面加载时填充字段所需的数据。
我的Ajax调用正在运行,但在调用关键函数GetUserDefaults()
之前它们没有完成。无论我在哪里设置断点(使用Firefox),我都看到_MasterRules
始终按预期初始化,但没有断点GetUserDefaults()
在GetMasterRules()
完成之前被调用。谁能告诉我document.ready中的代码有什么问题?
以下是我的代码示例:
_MasterRules = null;
_UserDefaults = null;
$(document).ready(function () {
$.when( GetMasterRules() )
.done(function () {
GetUserDefaults() // <<== MUST NOT call until GetMasterRules() is complete
});
})
// Initialize Master Rules
function GetMasterRules() {
$.ajax({
type: "GET",
url: "/GetMasterRules",
dataType: "json"
})
.done(function (data) {
_MasterRules = data;
})
}
// _MasterRules must be initialized before calling
function GetUserDefaults() {
if (_MasterRules == null) {
alert("_MasterRules == null");
}
$.ajax({
type: "GET",
url: "/GetUserDefaults",
dataType: "json"
})
.done(function (data) {
_UserDefaults = data;
})
}
答案 0 :(得分:2)
在将undefined
传递给$.when
时,代码没有链接/等待延迟对象。
提示:返回延迟GetMasterRules
。