当等待多个ajax调用的函数时jquery

时间:2015-02-20 01:28:15

标签: jquery ajax

我有一个javascript函数,它等待多个ajax调用,然后将响应组合到一个javascript数组中。然后我需要从函数返回数组(数据),但不知道我该怎么做。

请对此有所帮助。

var myCombinedArray = fetchData();

function fetchData() {
    var data = [];
    $.when(fetchThisYearsData(),fetchLastYearsData()).done(function(dataThisYear, dataLastYear){
        data[0] = dataThisYear[0];
        data[1] = dataLastYear[0];
        console.log(data);
    }); 
    return data;
}

我已经阅读了足够的知道myCombinedArray将为空,因为ajax是异步的,但我不知道如何实现我想要的结果。

感谢


更新

我试图实现回调,但有点迷失。我收到错误“回调不是函数”。

$(function () {
  var myCombinedArray;
  fetchData(function (myCombinedArray) {
        //what to do here?
    });

  console.log(myCombinedArray);
})

function fetchData(callback) {

    $.when(fetchThisYearsData(), fetchLastYearsData()).done(function(dataThisYear, dataLastYear){
        var data = [];
        data.push(dataThisYear[0]);
        data.push(dataLastYear[0]);
        callback(data);
    }); 
}

1 个答案:

答案 0 :(得分:2)

您可以使用回调函数,该函数将在填充所有数据后调用

fetchData(function (myCombinedArray) {
    //do your stuff
});

function fetchData(callback) {
    $.when(fetchThisYearsData(), fetchLastYearsData()).done(function (dataThisYear, dataLastYear) {
        var data = [];
        data.push(dataThisYear[0]);
        data.push(dataLastYear[0]);
        console.log(data);
        callback(data);
    });
}

阅读更多