Dies ist eine Art Denkaufgabe, da der Code perfekt funktioniert, wie es ist, irritiert es nur meinen ästhetischen Sinn so leicht. Ich wende mich Stack Overflow zu, weil mein eigenes Gehirn gerade versagt.Javascript Callback-Funktionen und Rekursion
Hier ist ein Codefragment, das mithilfe der Google Maps JS-API nach einer Adresse sucht und eine Markierung auf einer Karte platziert. Manchmal schlägt die anfängliche Suche fehl, daher möchte ich den Vorgang mit einer anderen Adresse wiederholen.
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));
})
(Der zweite Parameter zu getLatLng
ist eine Callback-Funktion.)
Natürlich können Sie, dass die drei Linien sehen können, dass die Karte zentriert und zoomen, und fügen Sie den Marker dupliziert werden, einmal in dem primären Rückruf und einmal im Fallback Callback (ha ha). Können Sie eine Möglichkeit finden, das Ganze ohne Redundanz auszudrücken? Sie erhalten Bonuspunkte und meine Bewunderung, wenn Ihre Lösung für eine beliebige Anzahl von Backup-Map-Strings funktioniert.
Sie brauchen keine literale Benennung, Sie können verwenden, was ich in meiner Lösung verwendet - arguments.callee bezieht sich auf die Funktion. –
Literal Namen ist Weg sauberer und weniger gesprächig als Ihre Lösung obwohl –
Benennung der Funktion, anstatt es über Argumenten auf sich selbst verweisen zu lassen. Callee ist "Weg" sauberer? LOL - Ich denke, das ist etwas subjektiv, um ehrlich zu sein. :) –