获取设备当前位置(navigator.location.getCurrentPosition)后将信息保存到数据库,React Native

save info to database after getting device current location (navigator.location.getCurrentPosition), React Native

我想将一些信息保存到数据库中,但应该在用户定位功能完成获取当前用户位置后发生。

async function getImmediate() {
        let coord;
        navigator.geolocation.getCurrentPosition(
          async position => {
            const latitude = await JSON.stringify(position.coords.latitude);
            const longitude = await JSON.stringify(position.coords.longitude);
            coord = await position.coords.latitude;
          },
          error => Alert.alert(error.message),
          {
            enableHighAccuracy: true,
            timeout: 20000,
            maximumAge: 1000
          }
        );
    
        return coord;
      }

async function saveNow(){
let coordinates = await getImmediate();

//save to the database
console.log(coordinates)
}

我得到的是空值和未定义的值。

我将感谢您的帮助,因为我似乎无法快速找到问题所在...

您可以使用承诺来实现您想要做的事情。下面的代码应该可以工作并且 return 结果:

function getImmediate() {
    return new Promise((resolve, reject) => 
        navigator.geolocation.getCurrentPosition(
          position => {
            const latitude = JSON.stringify(position.coords.latitude);
            const longitude = JSON.stringify(position.coords.longitude);
            resolve({ latitude, longitude});
          },
          error => Alert.alert(error.message),
          {
            enableHighAccuracy: true,
            timeout: 20000,
            maximumAge: 1000
          }
        )
    );
}

async function saveNow(){
  let coordinates = await getImmediate();

  //save to the database
  console.log(coordinates)
}