J'ai un objet de classe appelé Location qui fonctionne avec Google afin de géocoder une adresse donnée. La requête de géocodage est effectuée via un appel AJAX et gérée via un rappel qui initiera les membres de la classe une fois la réponse arrivée.Callback AJAX dans le constructeur Obj
Voici le code:
function Location(address) {
this.geo = new GClientGeocoder();
this.address = address;
this.coord = [];
var geoCallback = function(result) {
this.coord[0] = result.Placemark[0].Point.coordinates[1];
this.coord[1] = result.Placemark[0].Point.coordinates[0];
window.alert("I am in geoCallback() lat: " + this.coord[0] + "; lon: " + this.coord[1]);
}
this.geo.getLocations(this.address, bind(this, geoCallback));
}
Location.prototype.getAddress = function() { return this.address; }
Location.prototype.getLat = function() { return this.coord[0] }
Location.prototype.getLng = function() { return this.coord[1] }
Ma question est: il est possible d'attendre la réponse de Google avant de quitter le constructeur?
Je n'ai aucun contrôle sur la requête AJAX car elle est faite à travers les API Google.
Je veux être sûr que this.coord[]
est correctement initialisé une fois qu'un obj de lieu est créé.
Merci!
A quoi servent ces propriétés? Chaque propriété que vous donnez ceci est publique. Vous pouvez facilement supprimer les getters et utiliser les propriétés directement (faites simplement des propriétés distinctes 'Lat' et 'Lng' au lieu d'un tableau' coord'). – Tomalak