Мне было интересно, если есть способ получить jQuery Deferred, работающий с Google Geocoder. Я пытался что-то вроде:Google Geocoder и jQuery Deferred
// ...
_geocoder: function(address) {
if (!this.props.geocoder) {
this.props.geocoder = new google.maps.Geocoder();
}
var deferred = $.Deferred(),
geocoder;
geocoder = this.props.geocoder.geocode({ 'address': address }, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
deferred.resolve({
lat: results[ 0 ].geometry.location.k,
lng: results[ 0 ].geometry.location.A
});
} else {
deferred.reject();
}
return deferred.promise();
});
$.when(geocoder()).then(
function(data) {
alert(status);
},
function() {
alert("Defer rejected");
}
);
},
// ...
Однако google.maps.Geocoder
не возвращает JQuery Отложенный объект, так что этот код не будет работать, как ожидалось. Есть ли другой способ сделать это? Я тоже не уверен в return deferred.promise();
, потому что я посмотрел примеры кода, которые только что использовали return deferred;
. Есть ли разница?