C'est une question de casse-tête, puisque le code fonctionne parfaitement bien tel quel, il irrite mon sens esthétique. Je me tourne vers Stack Overflow parce que mon propre cerveau me manque en ce moment.Fonctions de rappel Javascript et récursivité
Voici un extrait de code qui recherche une adresse à l'aide de l'API JS de Google Maps et place un marqueur sur une carte. Cependant, parfois la recherche initiale échoue, donc je veux répéter le processus avec une adresse différente.
geocoder.getLatLng(item.mapstring, function(point) {
if (!point) {
geocoder.getLatLng(item.backup_mapstring, function(point) {
if (!point) return;
map.setCenter(point, 13);
map.setZoom(7);
map.addOverlay(new GMarker(point));
})
return;
}
map.setCenter(point, 13);
map.setZoom(7);
map.addOverlay(new GMarker(point));
})
(Le second paramètre à getLatLng
est une fonction de rappel.)
Bien sûr, vous pouvez voir que les trois lignes qui centre et zoom sur la carte et ajouter le marqueur sont dupliqués, une fois dans le rappel primaire et une fois dans le "rappel de secours" (ha ha). Pouvez-vous trouver un moyen d'exprimer le tout sans aucune redondance? Vous gagnez des points bonus, et mon adulation, si votre solution fonctionne pour un nombre arbitraire de chaînes de carte de sauvegarde.
Vous n'avez pas besoin de noms littéraux, vous pouvez utiliser ce que j'ai utilisé dans ma solution - arguments.callee fait référence à la fonction. –
La dénomination littérale est bien plus propre et moins bavarde que votre solution. –
Nommer la fonction au lieu de lui permettre de se référer à elle-même via arguments.callee est "bien" plus propre? LOL - Je pense que c'est un peu subjectif, pour être honnête. :) –