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 :
getLocations() : méthode de l'objet geocoder (GClientGeocoder) qui prend en paramètre une adresse (string) et une fonction de callback
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 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"); }
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!
Partager