Javascript React/Redux:使用承诺获取用户地理位置,并将位置发送给动作创建者
在我的Javascript React/Redux:使用承诺获取用户地理位置,并将位置发送给动作创建者,javascript,node.js,reactjs,redux,Javascript,Node.js,Reactjs,Redux,在我的store.js中,我试图从浏览器中获取最终用户的地理位置,然后发送一个动作创建者,但这没有发生 function showPosition(position) { console.log("showPosition"); //console.log(position); return position; } function getLocation() { // Get the current 'global' time from an API usin
store.js
中,我试图从浏览器中获取最终用户的地理位置,然后发送一个动作创建者,但这没有发生
function showPosition(position) {
console.log("showPosition");
//console.log(position);
return position;
}
function getLocation() {
// Get the current 'global' time from an API using Promise
console.log("getLocation")
return new Promise((resolve, reject) => {
if (navigator.geolocation) {
console.log("Boolean navigator.getLocation:" + Boolean(navigator.geolocation))
Promise.resolve(navigator.geolocation.getCurrentPosition(showPosition))
} else {
Promise.reject("Geolocation is not supported by this browser.")
}
})
}
function loadNearbyShops() {
return function (dispatch) {
return getLocation().then(
position => dispatch(getCoords(position))
).catch(
error => console.log(error)
);
};
}
store.dispatch(loadNearbyShops())
但这不会触发我下面的动作
另一方面,我的动作创建者
定义为:
export function getCoords(position) {
console.log(position)
return {
type: 'GET_LOCATION',
long: position.coords.longitude,
lat: position.coords.latitude
}
}
将
getLocation
函数修复为:
函数getLocation(){
返回新承诺((解决、拒绝)=>{
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(位置=>{
展示位置(pos);
解决(pos);
});
}否则{
拒绝(“此浏览器不支持地理位置。”)
}
)};
}