所有这些函数都在主函数中,该函数在 jQuery 异步 AJAX 成功事件之后调用,并且每秒运行一次。这三个函数中的每一个都调用其中的特定函数。
这是我拥有的基本 javascript 代码:
function mainFunction() {
function selectView(){
// do stuff
}
function startWidgets(){
// do stuff
}
function popData(){
// do stuff
}
$.when(selectView()).then(startWidgets).then(popData);
}
function ajaxCall(){
ajaxRequest = $.ajax({
type: "GET",
url: "",
data: {},
async: true,
cache: false,
timeout:50000,
success: function(data){
mainFunction();
setTimeout(
ajaxCall, 5000
);
},
error: function() {
// error stuff
},
complete: function() {
// complete stuff
}
});
}
selectView()
- 使用 jQuery .load() 方法加载基于特定 AJAX 数据的 HTML 结构。
startWidgets()
- 通过将小部件放入 HTML 结构(基于 ID 和类)来初始化小部件。只运行第一次。
popData()
- 根据 AJAX 数据将数据填充到所有其他小部件。
我试过了$.when(selectView()).then(startWidgets).then(popData);
但这没有用。我的问题是 startWidgets 通常在 selectView 之前运行,但是由于还没有 HTML 标记,所以它失败了。我需要它们以特定的顺序运行,并且在前一个完成之前不会开始。