gpt4 book ai didi

javascript - 在 Google 地理编码中使用回调函数

转载 作者:行者123 更新时间:2023-12-03 11:21:29 25 4
gpt4 key购买 nike

我已经为此苦苦挣扎了几个小时,即使在阅读了 Stack 上的几个示例之后,我也无法使其正常工作。我是一个 JS 新手,这无济于事。

我正在尝试从 Google Geocoder API 检索有关地址的信息,然后将对象传递给另一个函数。根据我的阅读,我了解我用来检索信息的函数是异步的,因此我需要使用回调函数来读取它。但是,当我尝试这样做时,我的控制台仍然返回“未定义”。我知道信息来自 Google 很好,因为当我在结果对象上使用 console.log() 时,它会正确返回。

无论如何,这就是我正在使用的:

function onSuccess(position) {
getLocationData(position, function(locationData) {
console.log(locationData);
});
}

function getLocationData(position, callback) {
geocoder = new google.maps.Geocoder();
var location = 'Billings,MT';

if( geocoder ) {
geocoder.geocode({ 'address': location }, function (results, status) {
if( status == google.maps.GeocoderStatus.OK ) {
return results[0];
}
});
}
callback();
}

就像我提到的那样,我得到的只是“未定义”。如果我将 'console.log(results[0])' 放在 getLocationData() 返回上方,则返回的对象是正确的。任何帮助将非常感激。

最佳答案

您的问题是,您没有将回调连接到返回。作为 geocode()函数本身已经是异步的,return在那里没有任何影响。相反,您必须将您在此处返回的值直接传递给回调函数。像这样:

function getLocationData(position, callback) {
geocoder = new google.maps.Geocoder();
var location = 'Billings,MT';

if( geocoder ) {
geocoder.geocode({ 'address': location }, function (results, status) {
if( status == google.maps.GeocoderStatus.OK ) {
callback(results[0]);
}
});
}
}

关于javascript - 在 Google 地理编码中使用回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20028808/

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