在不使用状态的情况下获取设备纬度和经度



在我的操作文件夹中(使用 redux( 我想获取设备位置,以便我可以使用它来查询 firestore,我的代码返回未定义。我不确定我的错误来自哪里。知道如何在不将其存储在我的状态中的情况下获取设备位置吗?

const myCoord = navigator.geolocation.getCurrentPosition(position => {
const { latitude, longitude } = position.coords;
const LatLong = {
'lat': latitude,
'long': longitude
}
return LatLong
});

你被取消定义,因为getCurrentPosition没有立即完成。这是一个异步函数。例如,您可以做的是创建一个承诺,该承诺将在getCurrentPosition成功时完成,并在错误时被拒绝。

以下是我如何实现这一点:

const myCoord = () =>
new Promise((resolve, reject) => {
const geoSuccess = position => resolve(position);
const geoFailure = error => reject(error);
navigator.geolocation.getCurrentPosition(
geoSuccess,
geoFailure,
geoOptions
);
const geoOptions = {
timeout: 5000,
maximumAge: 5000,
enableHighAccuracy: false
};
});

然后你需要用"然后"或"异步"调用

我建议在这里阅读有关将回调更改为承诺的信息

引用来自本网站的最佳描述您的问题

在理想情况下,所有异步函数都已经返回 承诺。不幸的是,一些 API 仍然期望成功和/或失败 以旧方式传递的回调。最明显的例子是 setTimeout(( 函数

最新更新