我无法将 javaScript 函数(地理编码)的返回值存储在变量中

严厉的耆那教

我正在尝试存储我在函数内计算的纬度和经度值。如果我console.log在函数中同时使用了两个值,那么它工作正常。但是,如果我返回这些值以在其他地方使用它们,那么我不能这样做(它会在控制台中引发错误,因为此 coordinates 列表未定义)无论我从这个Geocoding函数返回什么,它都会在控制台中显示未定义。这是代码片段:

function Geocoding() {
  axios.get('https://maps.googleapis.com/maps/api/geocode/json', {
    params: {
      address: enteredAddress,
      key: 'my API key here'
    }
  })
    .then(function (response) {
      var lat = response.data.results[0].geometry.location.lat;
      var lng = response.data.results[0].geometry.location.lng;
      return [lat, lng];
    })

    .catch(function (error) {
      console.log(error);
    });
}

const submitHandler = (event) => {
  event.preventDefault();

  var coordinates = Geocoding();

  const userInput = { //object
    location: {
      latitude: coordinates[0],
      longitude: coordinates[1],
      maxDistance: enteredDistance
    },
    instrumentType: enteredInstrumentType,
    awardNumber: enteredAwardNumber,
    includeRetired: enteredIRI
  };
  props.onSaveUserInput(userInput);

  setEnteredAddress('');
  setEnteredDistance('');
  setEnteredInstrumentType('');
  setEnteredAwardNumber('');
  setEnteredIRI('');
};
好的

问题是Geocoding没有返回任何东西。无论如何,如果可能的话,我会将代码转换为async/await以便更容易理解。看看下面用async/固定的相同代码await

async function Geocoding() {
  try {
    const response = await axios.get('https://maps.googleapis.com/maps/api/geocode/json', {
      params: {
        address: enteredAddress,
        key: 'my API key here'
      }
    })
    
    var lat = response.data.results[0].geometry.location.lat;
    var lng = response.data.results[0].geometry.location.lng;
    return [lat, lng];
  } catch (error) {
    console.error(error)
    throw error;
  }
}

const submitHandler = async (event) => {
  event.preventDefault();

  var coordinates = await Geocoding();

  const userInput = { //object
    location: {
      latitude: coordinates[0],
      longitude: coordinates[1],
      maxDistance: enteredDistance
    },
    instrumentType: enteredInstrumentType,
    awardNumber: enteredAwardNumber,
    includeRetired: enteredIRI
  };
  props.onSaveUserInput(userInput);

  setEnteredAddress('');
  setEnteredDistance('');
  setEnteredInstrumentType('');
  setEnteredAwardNumber('');
  setEnteredIRI('');
};

请注意,要调用Geocoding您还需要使用async/await或使用Promise.thenlikeGeocoding().then((coordinates) => {...})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将Google地理编码的返回值存储在外部javascript变量中

Javascript Promise:无法从我的函数中获取返回值

将函数链中的返回值分配给javascript中的变量

将javascript函数返回存储在变量中

将函数返回值存储到变量中

如何将Javascript函数的返回值捕获到PHP变量中?

Javascript-我的函数地理定位权限onchange以几何级数返回值

无法将函数存储在变量 javascript 中

将返回值存储在变量中

如果我不将函数的返回值保存在变量中,该函数的返回值在哪里存储?

将存储过程的返回值存储在变量中

如何将JavaScript函数的返回值获取到Python变量

如何将javascript异步函数的返回值传递给python变量

无法将值从匿名函数存储到全局变量中-Javascript和量角器

如何将函数的返回值存储在 react-native 的变量中

将subprocess.call()返回值存储在变量中

如何将未来的返回值存储在变量中?

无法从“异步”函数获取返回值-Javascript

JavaScript Fetch无法返回值调用其他函数

我的javascript函数返回值时遇到问题

无法将javascript附加到我的html中

我可以访问函数返回值两次而不将其存储在变量中或再次调用函数吗?

将 C# 函数返回值传递给 Javascript

使用Javascript将值存储在变量中

将CSS值存储在JavaScript变量中

从JavaScript中的嵌套函数返回值

在javascript函数中返回值

从JavaScript中的嵌套函数返回值

无法在JavaScript中的if语句中返回值