Je veux définir la variable globale à partir de la fonction et la boucle ajax pour obtenir la distance. Cependant, la variable nearestIndex est toujours indéfinie.Ajax réussit en boucle pour définir la variable globale
solution d'abord, je suis arrivé était d'utiliser async: false - ce travail est dans mon navigateur pc, mais ce projet est webservice android, et cette solution fonctionne pas WebView.
Et bien sûr async: false non recommandé. J'ai besoin de cet exemple dans mon cas, j'ai cherché ce problème dans le débordement de pile, mais j'ai toujours échoué à comprendre le rappel.
var allDestination = ["A", "B", "C"];
var nearestIndex;
function getNearest(){
\t var from = myPosition.getLatLng().lat + "," + myPosition.getLatLng().lng;
\t var tempDistance;
\t for(var i=0; i<allDestination.length; i++){
\t \t var destination = allDestination[i].getLatLng().lat + "," + allDestination[i].getLatLng().lng;
\t \t $.ajax({
type: "GET",
url: "http://localhost:8989/route?point=" + from + "&point=" + destination + "&points_encoded=false&instructions=false",
dataType: 'json',
contentType: "application/json",
success: function (data) {
\t var distance = data.distance;
\t if(i == 0){
\t \t tempDistance = distance;
\t \t nearestIndex = i;
\t } else {
\t \t if(distance < tempDistance){
\t \t \t tempDistance = distance;
\t \t \t nearestIndex = i;
\t \t }
\t }
}
});
\t }
}
function onMapClick(e) {
\t myPosition.setLatLng(e.latlng);
\t myPosition.addTo(map);
\t getNearest();
\t allDestination[nearestIndex].addTo(map);
}
Merci son travail monsieur. Donc, le concept est si longueur de la longueur = 3, nous appelons la fonction de rappel 3 fois? –
Bienvenue ...! son semblable: nous passons la fonction de rappel 3 fois, mais elle n'est invoquée qu'une seule fois, c'est-à-dire lors de la toute dernière exécution 'success'. – vijayP