jQuery $ .when(…)。done(…)没有按预期工作

我有一个时序关键function,直到几个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; }) } 

代码没有链接/等待延迟对象,因为它将undefined传递给$.when

提示:从GetMasterRules 返回延迟。