jQuery $ .each范围

时间:2016-01-09 00:38:12

标签: javascript jquery json

我已经检查了所有可用的问题,并且我理解在处理jQuery的$ .each循环时有一些奇怪之处。我似乎无法理解为什么在该范围之外声明的变量,但在其中初始化的变量也会丢失。我目前没有处理DOM,只是使用getJSON来提取一些数据并将其交给其他函数供以后使用。

这就是我试图做的事情,我完全感到困惑。

function getJSONData(){
    var ar = []; 

    $.getJSON('pathto.json', function(data){
            $.each(data, function(k,v){
            ar.push(k);   // lots of data in ar
        });     
    });

    return ar;  // ar is empty again.
}

这里有无能为力的线索吗?我已经尝试过这个'这个'我可以想到,并在getJSON循环中初始化ar。

非常感谢!

1 个答案:

答案 0 :(得分:1)

getJSON是异步的,所以函数会在填充ar之前立即返回,你需要做这样的事情:

function getJSONData(callback){
    $.getJSON('pathto.json', function(data){
        var ar = []; 

        $.each(data, function(k,v){
            ar.push(k);   // lots of data in ar
        });   

        callback(ar);
    });
}

getJSONData(function(ar) {
    console.log(ar);
});