Я хотел бы использовать HTML5 GeoLocation API для получения моей долготы и широты и управления запросом с помощью объекта jQuery Deferred.
Вот как выглядит мой код:
var geoLocation = {
getLocation: function() {
// create deferred object
var deferred = $.Deferred();
// if geo location is supported
if(navigator.geolocation) {
// get current position and pass the results to this.geoLocationSuccess or time out after 5 seconds if it fails
navigator.geolocation.getCurrentPosition(this.geoLocationSuccess, this.geoLocationError, {
timeout: 5000
});
} else {
// geo location isn't supported
console.log('Your browser does not support Geo Location.');
}
},
geoLocationSuccess: function(position) {
// resolve deffered object
deferred.resolve(position.coords.latitude, position.coords.longitude);
// return promise
return deferred.promise();
},
geoLocationError: function() {
console.log('Geo Location failed.');
}
};
А вот мой отложенный объект:
$.when(geoLocation.getLocation()).then(function(data, textStatus, jqXHR) {
console.log(data);
});
Я ожидаю, что долгота и широта будут возвращены обратным вызовом then()
, но вместо этого я получаю сообщение об ошибке, что deferred
не определено. Я думаю, что это как-то связано с областью, в которой я определяю свой отложенный объект, но я не уверен. Что мне не хватает?