【发布时间】:2019-09-02 20:25:24
【问题描述】:
我正在使用 Google Geocoding API 对我的地址进行地理编码,从“地址 150,城市”到它的纬度和经度。在函数结束时,我试图返回一个对象,其中包含这两个,如下面的代码所示。
我认为问题可能是,编码需要相当长的时间,因为我今天想解决这个问题,但我还没有学习 await 和 async with promises 和东西(我明天会做,别担心),我改用 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);
}
});
【问题讨论】:
-
只需在调用 `return lngLat;` 的地方进行实际工作 - 承诺不会返回那样的值。
-
@EvanKnowles 有时我倾向于过于复杂。感谢您解决我的问题:)
标签: javascript function return