我已经检查了所有可用的问题,并且我理解在处理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。
非常感谢!
答案 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);
});