在then promise方法之后返回数组变量数据?

时间:2018-04-28 12:53:42

标签: javascript promise geolocation

我创建了一个新的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

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

您无法预先声明变量并期望它具有正确的值。您应该创建一个then处理程序来访问coordinates变量:

getUsrLoc()
  .then(showPosition)
  .then(function(coordinates) {
    // Do your stuff here
  });