JS Geolocation wait until success before return value

geolocation, javascript

Solution

Use a callback, not a timeout which will end you up in all sorts of problems. Something along the lines of:

// 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);
      }
    )
}

Problem

I tried developing browser geolocation, but it seems geolocation quickly return a value when it is still searching for my location. Example of my script: ``` 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} ) } ``` If we execute this script `updateCoordinate`, the function will return `undefined`. But after a moment if we check the cookie it set right the coordinate. How to make getCurrentPosition waiting until get exact coordinate before returning the value?

Original source