我创建了一个新的promise函数来将异步地理位置设置为全局函数。
function getUsrLoc() {
return new Promise(function(resolve, reject) {
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(resolve)
} else {
reject('Geolocation is not supported by this browser or OS');
}
});
}
现在我创建了一个函数来将坐标推送到一个新数组,同时在运行.then方法后返回带有预期数组项的新变量。
//push coordinates into new array
function showPosition(position) {
var coordinates = new Array();
coordinates.push(Math.floor(position.coords.latitude))
coordinates.push(Math.floor(position.coords.latitude))
console.log(coordinates);
return coordinates;
}
现在我可以在getUsrLoc()函数上运行.then方法,并将showPosition函数作为参数插入。
getUsrLoc().then(showPosition);
现在正在运行,我将坐标打印到控制台(在浏览器提示之后)但没有返回新的变量坐标。
coordinates;
//undefined
我在这里缺少什么?
答案 0 :(得分:0)
您无法预先声明变量并期望它具有正确的值。您应该创建一个then
处理程序来访问coordinates
变量:
getUsrLoc()
.then(showPosition)
.then(function(coordinates) {
// Do your stuff here
});