Bonjour,
Je suis en train de développer un site web avec une googlemap intégrée ce qui m'oblige malheureusement a me mettre au javascript (API en javascript)...et je ne suis pas forcémnt trés à l'aise avec ce langage.
Jusqu'a maintenant, je n'avais rencontré aucun problème (enfin presque) mais se pose à moi un problème lié à l'appel de callbacks (apparement exécutés de façon asynchrone)
En gros, l'application demande à l'utilisateur une adresse de départ, et une adresse d'arrivée. Ensuite, grâce au geocoder fourni par l'API googlemap, je retrouve toutes les possibilitées d'adresses correspondantes à ce qu'il a entré.
Cela se fait de la facon suivante :
Code :
- ok=true;
- geocoder.getLocations(addressDep, function(response) {getPos(response,document.getElementById("choosedep" ))});
- geocoder.getLocations(addressArr, function(response) {getPos(response,document.getElementById("choosearr" ))});
- if (ok)
- {
- alert("c'est tout bon" );
- }
|
getLocations() : méthode de l'objet geocoder (GClientGeocoder) qui prend en paramètre une adresse (string) et une fonction de callback
addressDep et addressArr : les adresses de départ et d'arrivée issues des input
getPos() : fonction qui est appelée dans le callback et qui modifie la variable ok en fonction de plusieurs paramètre que je ne vais pas exposer ici
ok : variable booléenne modifiée dans getPos et qui teste si l'adresse entrée existe et si il n'y a qu'une adresse réelle correspondante (pour chaque input)
Mon problème : le test effectué à l'issu des deux appels n'est pas pertinent car la variable ok n'est pas encore modifiée (execution du callback dans un thread parallèle)
Ma question : est-il possible de rendre l'execution du callback synchrone ???
merci
Lantier!