To jest rodzaj problemu z barmanezją, ponieważ kod działa idealnie dokładnie tak, jak jest, tylko trochę irytuje mój zmysł estetyczny. Zwracam się do Stack Overflow, ponieważ mój własny mózg właśnie mnie zawodzi.Funkcje wywoływania zwrotów i rekursja JavaScript
Oto fragment kodu, który wyszukuje adres za pomocą interfejsu API Map Google Google i umieszcza znacznik na mapie. Jednak czasami początkowe wyszukiwanie kończy się niepowodzeniem, dlatego chcę powtórzyć proces z innym adresem.
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));
})
(Drugi parametr getLatLng
jest funkcja zwrotna).
Oczywiście widać, że trzy linie, które centrum i powiększać mapę i dodać znacznik są duplikowane, raz w podstawowej zwrotnego i raz w "callback'u zwrotnym" (ha ha). Czy potrafisz znaleźć sposób na wyrażenie wszystkiego bez żadnej redukcji? Zdobywasz punkty bonusowe i moje uwielbienie, jeśli twoje rozwiązanie działa dla dowolnej liczby ciągów map kopii zapasowej.
Nie potrzebujesz dosłownego nazewnictwa, możesz użyć tego, czego użyłem w moim rozwiązaniu - arguments.callee odnosi się do funkcji. –
Dosłowne nazywanie jest czystsze i mniej rozmowne niż twoje rozwiązanie. –
Nadawanie nazwy funkcji zamiast pozwalać jej na odwoływanie się do siebie poprzez arguments.callee jest "droga" czystsza? LOL - Myślę, że to jest trochę subiektywne, szczerze mówiąc. :) –