Bonjour,
J'ai quelques soucis sur l'asynchrone ><. J'ai lu ça qui répondait une partie de ma réponse mais je souhaite enregistrer plusieurs valeurs sur un tableau.
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 var getBoutique = JSON.parse(window.localStorage.getItem('infoBout')); var tri = new Array(); for(var j = 1; j<taille; j++){ where = getBoutique[j].adresse+", "+getBoutique[j].ville; boutiqueProche(lat, lon,where, function(distanceO){ tri.push(distanceO); }); }Dans mon callback, j'enregistre bien mes valeurs dans le tableau tri[] =) mais le seul soucis est qu'il est asynchrone (Le geocoder prend trop de temps à répondre)! Donc lorsque je souhaite réutiliser mes valeurs en dehors (après la boucle for), j'ai mon tableau UNDEFINED car le geocoder prend du temps a répondre. Je voudrai savoir s'il existe une fonction qui puisse rendre le geocoder synchrone ou j'attend que le tableau se remplit pour pouvoir utiliser le tableau mais je ne vois pas comment faire ><
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 function boutiqueProche(cLat, cLong,where, callback){ var geocoder= new google.maps.Geocoder(); var currentPosition = new google.maps.LatLng(cLat, cLong); // On récupère nos info var recup = getBoutique.length; var distance; geocoder.geocode({ 'address': where}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { var laBoutique = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng()); distance = google.maps.geometry.spherical.computeDistanceBetween(currentPosition, laBoutique); recup=distance/1000; callback(recup); } else{ if( status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT){ setTimeout( function(){ boutiqueProche(cLat, cLong, where, callback); // rappel fonction avec meme param }, 200); } else { /*Faire quelque chose */ } } }); }
Merci d'avance de votre aide, pour savoir comment résoudre mon problème ><
Partager