jQuery:等待功能

时间:2015-12-30 13:47:39

标签: javascript jquery

我在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());
}

5 个答案:

答案 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
   })
};