gpt4 book ai didi

javascript - 在 Foreach 循环 JS 中调用 Async 方法

转载 作者:行者123 更新时间:2023-11-28 08:01:34 25 4
gpt4 key购买 nike

我正在尝试对 Google map 进行异步调用,以获取 foreach 循环内的地址。

这是函数:

//Function to get address from geographic coordinates
function getAddress(item) {
var address = 'Not fetched';
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(parseFloat(item.Latitude), parseFloat(item.Longitude));
geocoder.geocode({ 'latLng': latlng }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK)
address = results[0].formatted_address;
});
return address;
}

这是循环:

 recreateMarkers: function (self, data) {
data.vehicleInfo.forEach(function (item) {
self.Location= getAddress(item);
});
}

数据结构:1.车辆ID2. 纬度3. 经度4.地点

现在的问题是它为我提供了所有车辆相同或未定义的位置。

如果有人可以提供帮助,我会很高兴。

最佳答案

这里是异步的问题,

返回地址在Google获取的地址由address = results[0].formatted_address;分配之前执行,所以你的函数应该是这样的

 function getAddress(item) {
var address = 'Not fetched';
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(parseFloat(item.Latitude), parseFloat(item.Longitude));
geocoder.geocode({ 'latLng': latlng }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK)
address = results[0].formatted_address;
return address; //<= this statement should be here
});
// Note return address; should not be here
}

关于javascript - 在 Foreach 循环 JS 中调用 Async 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25326231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com