Esto es una especie de pregunta de acertijo, ya que el código funciona perfectamente bien tal como está, simplemente irrita mi sentido estético muy levemente. Estoy recurriendo a Stack Overflow porque mi propio cerebro me está fallando en este momento.Funciones de devolución de llamada de Javascript y recursión
Aquí hay un fragmento de código que busca una dirección usando la API JS de Google Maps y coloca un marcador en un mapa. Sin embargo, a veces la búsqueda inicial falla, por lo que quiero repetir el proceso con una dirección diferente.
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));
})
(El segundo parámetro a getLatLng
es una función de devolución de llamada.)
Por supuesto, se puede ver que las tres líneas que se centran y ampliar el mapa y añadir el marcador se duplican, una vez en la devolución de llamada primaria y una vez en la "devolución de llamada alternativa" (ja, ja). ¿Puedes encontrar una manera de expresar todo sin redundancia? Usted gana puntos de bonificación, y mi adulación, si su solución funciona para una cantidad arbitraria de cadenas de mapas de respaldo.
No necesita nombres literales, puede usar lo que utilicé en mi solución - arguments.callee se refiere a la función. –
La nomenclatura literal es mucho más clara y menos hablante que su solución, aunque –
Nombrar la función en lugar de permitir que se refiera a sí misma a través de arguments.callee es "way" cleaner? LOL - Creo que esto es algo subjetivo, para ser honesto. :) –