Javascript推送无法将对象添加到数组

时间:2011-05-16 12:27:49

标签: javascript arrays

下面的代码没有提示lis,但是列表。这是为什么?请注意,它绝对是lis.push推送线的8倍。

var lis = [], lat, lng;
$.getJSON("/locations/locations_list", function(data) {
    $.each(data.Locations, function(index, arr) {
        lis.push({lat:'aa', lng:'aa'});
    });
});
alert(lis);

var i, list = [], rlat=lat2-lat1, rlng=lng2-lng1;
for(i=0; i<500; i++){
  lat = lat1 + rlat * Math.random();
  lng = lng1 + rlng * Math.random();
  list.push({lat:lat, lng:lng, data:i});
}
alert(list);

1 个答案:

答案 0 :(得分:6)

您在lis的回调执行之前警告getJson,因此阵列尚未填满。请注意,jquery的ajax回调是异步的,所以即使代码看起来与第二种情况相同,实际的执行顺序也不是,所以结果也不是......

尝试:

$.getJSON("/locations/locations_list", function(data) {
    $.each(data.Locations, function(index, arr) {
        lis.push({lat:'aa', lng:'aa'});
    });
    alert(lis);
});