下面的代码没有提示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);
答案 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);
});