Nar*_*ade 2 ajax jquery design-patterns asynchronous
我最近开始了一个使用大量客户端jQuery / javascripts的项目。我正在努力使其中一个屏幕正常工作。
我有如下功能:
function init{
populateTypes();
populateGroups();
populateStatuses();
applyCurrentUserSettings();
}
Run Code Online (Sandbox Code Playgroud)
所有populate*方法都会$.ajax对服务器进行ajax调用(),并在视图上添加一些复选框列表。applyCurrentUserSettings方法还会发出ajax请求,并在视图上设置当前用户选择。
问题是populate*方法是异步的,并且由applyCurrentUserSettings方法调用,复选框列表为“有时”为空,apply方法失败。
我可以通过传递得到这个工作async: false的$.ajax电话,或链条内的另一个每个Ajax调用,但我想知道,如果有任何更好的方法/设计模式来处理这样的情况。
您可以使所有函数返回延迟并使用$.when。http://api.jquery.com/jQuery.when/
function populateTypes () {
//your code
return $.ajax(...);
}
$.when(populateTypes(), populateGroups(), ...).then(applyCurrentUserSettings);
Run Code Online (Sandbox Code Playgroud)