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
返回延迟。