gpt4 book ai didi

javascript - 为什么我的地理编码函数返回未定义?

转载 作者:行者123 更新时间:2023-12-02 23:01:34 24 4
gpt4 key购买 nike

我正在使用 Google 地理编码 API 对我的地址进行地理编码,从“地址 150,城市”之类的内容到它的纬度和经度。在函数末尾,我尝试返回一个对象,其中包含这两个对象,如下面的代码所示。

我认为问题可能是,编码需要相当长的时间,因为我今天想解决这个问题,但我还没有学习等待和异步与 promise 和东西(我明天会这样做,别担心),我用 setTimeout 代替,但即使我在编码完成后调用 console.log 也没有解决问题。由于我是 JS 新手,所以我只是尝试将其包装到变量中,只是稍微玩了一下代码,但都没有帮助。

            // address
var address = "Address 156, City"
function geocode(address) {
axios.get("https://maps.googleapis.com/maps/api/geocode/json", {
params: {
address: address,
key: "AIzaSyDaXOpbCeLYeRxWXtuSQQEbQzR14PejczM"
}
})
.then((response) => {
let lngLat = {
lat: response.data.results[0].geometry.location.lat,
lng: response.data.results[0].geometry.location.lng}
console.log(lngLat) // here it shows me my object
return lngLat;
})
}
let geocodedAddress = geocode(address);
setTimeout(function () { console.log(geocodedAddress); }, 3000);
}
});

最佳答案

您的函数中没有returnthen() 中的 return 不会返回到外部函数。

此外,请求是异步的,因此您需要返回 axios.get Promise 并在调用函数时使用另一个 then() 来访问数据

function geocode(address) {
// return the promise
return axios.get("https://maps.googleapis.com/maps/api/geocode/json", {
params: {
address: address,
key: "AIzaSyDaXOpbCeLYeRxWXtuSQQEbQzR14PejczM"
}
})
.then((response) => {
let lngLat = {
lat: response.data.results[0].geometry.location.lat,
lng: response.data.results[0].geometry.location.lng
};
return lngLat;
});
}

// usage
geocode(address).then(lngLat => {
console.log(lngLat);
});

关于javascript - 为什么我的地理编码函数返回未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57762364/

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