Reactjs 不使用状态获取设备纬度和经度
在我的操作文件夹(使用redux)中,我想获取设备位置,以便使用它查询firestore,我的代码返回未定义的。我不确定我的错误是从哪里来的。你知道如何在不将设备存储在我的状态下获取设备位置吗Reactjs 不使用状态获取设备纬度和经度,reactjs,react-native,Reactjs,React Native,在我的操作文件夹(使用redux)中,我想获取设备位置,以便使用它查询firestore,我的代码返回未定义的。我不确定我的错误是从哪里来的。你知道如何在不将设备存储在我的状态下获取设备位置吗 const myCoord = navigator.geolocation.getCurrentPosition(position => { const { latitude, longitude } = position.coords; const LatLong
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
};
});
然后您需要使用“then”或“async”调用
我建议阅读有关将回调变为承诺的内容
从这个网站上引用最能描述你的问题
在理想情况下,所有异步函数都将返回
承诺。不幸的是,有些API仍然期望成功和/或失败
要以旧方式传递的回调。最明显的例子是
setTimeout()函数
由于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
};
});
然后您需要使用“then”或“async”调用
我建议阅读有关将回调变为承诺的内容
从这个网站上引用最能描述你的问题
在理想情况下,所有异步函数都将返回
承诺。不幸的是,有些API仍然期望成功和/或失败
要以旧方式传递的回调。最明显的例子是
setTimeout()函数
你使用expo还是bare project?@DominikTargosz我使用expo你使用expo还是bare project?@DominikTargosz我使用expo