在一个函数中返回变量以在另一个函数中使用

时间:2012-06-14 19:54:01

标签: javascript

我正在努力使它能够编写一个定义变量的函数,然后在另一个函数中调用该函数来给我变量。

这就是我所做的:

function getLat(){
  navigator.geolocation.getCurrentPosition(function(lat){
    var latCoord = lat.coords.latitude;
    return latCoord;
  });
}
function getLong(){
  navigator.geolocation.getCurrentPosition(function(lon){
    var longCoord = lon.coords.latitude;
    return longCoord;
  });
}
function getImage(){
  var the_lat = getLat(),
      the_lon = getLong();
  console.log(the_lat + ' ' + the_lon);
}
getImage();

正如你所看到的,我有getLat()getLong()这两个函数来获取纬度,以及人的经度。然后,在getImage()中,我希望能够在变量中调用getLat()以将latCoord分配给该变量。我希望return latCoord;能做到这一点,但我错了。

这是可能的,还是应该以不同的方式进行?如果是这样,我可以看一个如何做到这一点的例子吗?

这是一个jsbin http://jsbin.com/ulelix/edit

如果我需要澄清任何内容,或者如果您需要我添加任何信息,请告诉我,我会在适当的时候这样做。我四处寻找,但似乎无法得到我正在寻找的答案。任何帮助表示赞赏,谢谢!

1 个答案:

答案 0 :(得分:1)

navigator.geolocation.getCurrentPosition方法是异步的。在执行回调之前,您的函数已返回undefined

您需要将依赖于该方法响应的任何代码移动到回调中。

我建议将两个函数合并为一个,因为回调中都有纬度和经度:

function getLatLng(){
    navigator.geolocation.getCurrentPosition(function(pos) {
        var lat = pos.coords.latitude,
            lng = post.coords.longitude;

        //Do stuff relying on lat/lng here...
    });
}