【发布时间】:2020-03-01 23:04:44
【问题描述】:
我正在做一个 for 循环来检查一些值,这里是一个简短的版本。我不明白为什么console.log(indirizzo[a]); 给出 undefined 而如果我这样做console.log(indirizzo); 我得到所有值
var indirizzo = [];
for (var i = 0; i < savedRepods.length; i++) {
for (var a = 0; a < ids.length; a++) {
if(savedRepods[i] == ids[a]) {
var geocoder = new google.maps.Geocoder;
var latlngStr = coords[a].split(',', 2);
var latlng = {lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1])};
geocoder.geocode({'location': latlng}, function(results, status) {
indirizzo.push(results[0].formatted_address);
});
console.log(indirizzo[a]);
}
}
}
如果我这样做的结果console.log(indirizzo);
0: "Corso Vittorio Emanuele, 1, 09017 Sant'Antioco SU, Italia"
1: "Via Nazionale, 78, 09017 Sant'Antioco SU, Italia"
2: "Via Giosuè Carducci, 15, 09017 Sant'Antioco SU, Italia"
3: "Via Perret, 11, 09017 Sant'Antioco SU, Italia"
4: "Lungomare Amerigo Vespucci, 2A, 09017 Sant'Antioco SU, Italia"
如果我这样做的结果console.log(indirizzo[a]);
undefined
【问题讨论】:
-
地理编码器是异步的
-
@geocodezip 我明白了,那我该如何解决呢?
-
@geocodezip 我正在尝试遵循答案,但它令人困惑,我应该使用 setTimeOut 吗?
-
setTimeout通常是解决异步问题的“坏主意”©(您可能可以使其工作,但您要么浪费时间,要么会遇到间歇性问题)。在可用时/在哪里使用回调函数中的数据 -
@geocodezip 我真的对回调感到困惑,也请阅读文档。你能给出答案吗?
标签: javascript jquery google-maps