我在jQuery中有两个函数,一个需要数据,另一个是通过php和json从数据库加载(这部分可以工作)。 我的问题是第一个在数据加载之前启动。 我如何解决这个问题?
这里有一些要理解的代码:
function loadBody(){
//Create an calendar of selectet month with classes to Events
}
function loadEvents(){
//loads Events from DB with php and json and puts them into an array
}
我尝试过例如以下内容:
function loadCal(){
$.when(loadEvents()).done(loadBody());
}
答案 0 :(得分:7)
loadBody
不是loadBody()
:您正在执行loadBody
而不是回拨。
function loadCal(){
$.when(loadEvents()).done(loadBody);
}
答案 1 :(得分:1)
$when
期望传递给它的方法返回一个承诺。您需要确保loadEvents
方法返回一个承诺。
function loadEvents(){
return $.ajax({
//Make ajax call to loads Events from DB
});
}
答案 2 :(得分:1)
function loadBody(){
//Create an calendar of selectet month with classes to Events
}
function loadEvents(){
//loads Events from DB with php and json and puts them into an array
loadBody();//call here after load complete
}
function loadCal(){
loadEvents();
}
答案 3 :(得分:0)
问题是loadEvents立即返回,因此在完成异步加载文件之前调用loadBody。你能发布完整的loadCal函数吗?在其中,您将有一些回调,将数据保存到阵列。在那里你可以调用loadBody()。我知道它并不像你想的那么好,但它应该有效:)
答案 4 :(得分:0)
你可以试试这个:
var loadEvents = function (callback) {
// do stuff...
callback()
};
var loadBody = function () {
loadEvents(function () {
// loadEvents function is already done here...
// continue with loadBody function
})
};