gpt4 book ai didi

Javascript - 可以在函数内console.log一个对象,但返回时它会显示为未定义

转载 作者:行者123 更新时间:2023-12-03 02:24:07 25 4
gpt4 key购买 nike

我正在尝试编写一个函数来对邮政编码进行地理编码,并将纬度和经度返回到一个对象,然后返回该对象。然后,我尝试将此地理编码函数的值分配给变量以创建对象。

当我通过控制台记录在此函数中创建的对象时,我会按预期在终端中返回一个对象:

const geo = (zip) => {
geocoder.geocode(zip, function(err, data) {
let latLng = {};
latLng.lat = data.results[0].geometry.location.lat;
latLng.lng = data.results[0].geometry.location.lng;

console.log(latLng); // Returns Object As Expected
});
};

但是当我替换 console.log(latLng) 时与 return latLng当将此函数分配给变量时,我得到一个未定义的值,如下所示:

let newObj = geo(zip);
console.log(newObj) // Returns Undefined

我很困惑,因为最初的 console.log确实显示在地理编码函数中正在创建一个对象,但是当我使用 return 时它返回为 undefined 。我认为这是我如何将其分配给变量的问题。毫无疑问,我误解了一些东西。

最佳答案

问题是你正在混合异步(通过回调和同步),你可以使用 promise 来简化这个

const geo = (zip) => {
return new Promise(resolve => {
geocoder.geocode(zip, (err, data) => {
let latLng = {};
latLng.lat = data.results[0].geometry.location.lat;
latLng.lng = data.results[0].geometry.location.lng;
resolve(latLng);
});
})
};

您可以像这样使用该功能

geo(zip).then(latLng => {
console.log(latLng) // or whatever
})

关于Javascript - 可以在函数内console.log一个对象,但返回时它会显示为未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49022381/

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