JS Geolocation在返回值之前等到成功

时间:2013-11-23 18:15:26

标签: javascript geolocation

我尝试开发浏览器地理位置,但是当地理位置仍在搜索我的位置时,地理位置似乎会快速返回值。

我的脚本示例:

function updateCoordinate() {
        navigator.geolocation.getCurrentPosition(
                function (position) {
                    setTimeout(function() {
                        var returnValue = {
                            latitude: position.coords.latitude,
                            longitude: position.coords.longitude
                        }
                        var serializeCookie = serialize(returnValue);
                        $.cookie('geolocation', serializeCookie);
                        return serializeCookie;
                    }, 5000);
                },
                function () {
                    alert('Sorry, we are failed to get your location')
                }, {timeout: 5000}
        )
    }

如果我们执行此脚本updateCoordinate,该函数将返回undefined。但过了一会儿,如果我们检查一下cookie,就会设置好坐标。

如何让getCurrentPosition等到获得精确坐标才返回值?

1 个答案:

答案 0 :(得分:14)

使用回调,而不是超时,这将导致各种各样的问题。有点像:

// Here you pass a callback function as a parameter to `updateCoordinate`.
updateCoordinate(function (cookie) {
  console.log(cookie);
});

function updateCoordinate(callback) {
    navigator.geolocation.getCurrentPosition(
      function (position) {
        var returnValue = {
          latitude: position.coords.latitude,
          longitude: position.coords.longitude
        }
        var serializeCookie = serialize(returnValue);
        $.cookie('geolocation', serializeCookie);

        // and here you call the callback with whatever
        // data you need to return as a parameter.
        callback(serializeCookie);
      }
    )
}