これらの関数はすべて、jQuery async AJAX 成功イベントの後に呼び出されるメイン関数にあり、毎秒実行されます。3 つの関数はそれぞれ、その中の特定の関数も呼び出します。
これは私が持っている基本的な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);
しかし、それはうまくいきませんでした。私の問題は、通常、selectView の前に startWidgets が実行されることですが、まだ HTML マークアップがないため、失敗します。その特定の順序で実行する必要があり、前の順序が完了するまで開始されません。