J'ai un code qui appelle Google Maps en mode asynchrone:Trouver une bonne façon de passer par un rappel avec l'API Google Maps
var directionsService = new google.maps.DirectionsService;
directionsService.route(arg1, callback);
directionsService.route(arg2, callback);
directionsService.route(arg3, callback);
function callback(response, status) {
// complex function here
}
En ce moment, chaque résultat de rappel en un seul morceau de données qui sont stockées dans un variable globale. Le design a quelque peu grandi et maintenant je voudrais inclure un paramètre avec chacun des callbacks. Mais je ne peux pas le faire directement, puisque je ne contrôle pas directionsService.route
. Il me semble également que c'est déjà une manière détournée de gérer le problème; Je préfère passer arg1, arg2, arg3
et leurs paramètres à une fonction qui peut gérer les choses asynchrones et nettoyer quand tout est revenu. Des suggestions sur ce qui est la meilleure façon d'y parvenir?
Je pourrais creuser mon trou plus profond en ajoutant un autre global et en le mettant à jour entre les appels. Je pourrais écrire un wrapper pour directionsService.route qui l'enveloppe dans une autre couche de callback indirection. Je pourrais essayer de matraquer le format de rappel en un correspondant à celui requis par une bibliothèque comme async. Je pourrais écrire plusieurs versions de ma fonction de rappel, ou le remplacer par un générateur de fonctions. Certaines de ces options sont-elles raisonnables? Y at-il quelque chose de mieux? Honnêtement, il s'agit d'un petit projet et je n'ai pas besoin de quelque chose qui évolue bien, mais pour ma tranquillité d'esprit, je voudrais quelque chose d'inébranlable et un peu sec.