【发布时间】:2013-09-20 18:36:15
【问题描述】:
我认为下面的代码中存在范围问题,但我正在尝试将地理编码回调函数返回的值保存到折线数组中,但是当我运行 console.log 时,该数组为空。
var addPolyline = function(map, line) {
var polyline = [];
$.each(line, function(index, address){
geocode(address, function(latlng){
polyline.push(latlng);
console.log(polyline);
});
});
console.log(polyline);
}
谁能告诉我如何将回调函数中的元素添加到数组中?谢谢
编辑: 点被添加到折线数组中,但是 console.log(polyline) 在 $.each 完成之前被执行。我需要想办法等到它完成。
Edit2:一位响应者说要使用回调。我用下面的代码尝试了这个,但是在 $.each 完成之前回调(折线)仍在执行。
var addPolyline = function(map, line) {
formatPolyline(line, function(polyline){
console.log(polyline);
});
}
var formatPolyline = function(line, callback) {
var polyline = [];
$.each(line, function(index, address){
geocode(address, function(latlng){
polyline.push(latlng);
console.log(polyline);
});
});
callback(polyline);
}
【问题讨论】:
-
您是否尝试过调试 polyline.push 是否已执行?调试线元素?另请阅读每个文档(我假设您使用的是 jquery)api.jquery.com/each
-
把
console.log(polyline)放到循环里面就可以一一看到数据了。 -
什么是
geocode?它可能是异步的。这意味着$.each完成并且您的console.log运行之前geocode的回调运行。 -
或者可能连geocode都没有执行,stackoverflow.com/questions/5782611/…这里有一点使用方法
-
geocode 肯定正在执行,因为我可以看到坐标。问题是,直到调用回调之后或 $.each 完成之后才会添加坐标,具体取决于您在上面查看的示例
标签: jquery