konto usunięte

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Witam,
mój problem wygląda następująco, próbuję wykonać poniższy fragment kodu


var coords = new Object();
// Try W3C Geolocation (Preferred)
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition( function(position) {
coords.latitude = position.coords.latitude;
coords.longitude = position.coords.longitude;
alert(coords.latitude); //dziala
}, function() {
alert("Unable to get your current position. Please try again. Geolocation service failed.");
});
} else {
alert('Your browser does not support geolocation.');
}
console.log(coords.latitude); //wywala undefined


ostatnia linia zwraca undefined, w jaki sposób zainicjować zmienną globalną żeby była dostępna z poza funkcji anonimowej??Marcin Skurski edytował(a) ten post dnia 14.11.11 o godzinie 22:07
Piotr Zimoch

Piotr Zimoch JavaScript Developer

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

W JS nie masz zasiegu blokowego lecz funkcyjny, wg. podanego przykladu obstawiam, ze Twoj obiekt position, ktory przypisujesz do coords nie posiada propertisa latitude.

konto usunięte

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

przy wywołaniu console.log(coords.latitude) z wnętrza funkcji anonimowej jest wszystko OK, poza funkcją anonimową wywala undefined

zauważyłem, że console.log z wnętrza funkcji anonimowej wykonuje się na końcu czyli najpierw wyświetlane coords.latitude a dopiero później inicjowane. Być może powinno się zrobić jakiegoś setTimeout lub w jakiś inny sposób ustawić oczekiwanie na zakończenie funkcji anonimowej??Marcin Skurski edytował(a) ten post dnia 14.11.11 o godzinie 22:16

konto usunięte

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

getCurrentPosition działa asynchronicznie. setTimeout jest pomysłem do niczego. to, co chcesz zrobić z obiektem coords zrób w funkcji, którą przekazujesz jako pierwszy parametr.
Piotr Koszuliński

Piotr Koszuliński JavaScript ninja

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Innymi słowy, interesuje Cię coś co nazywamy callbackami. Funkcja, którą najczęściej przekazujemy do jakiejś metody, a która zostaje przez tę metodę wykonana z parametrami, które są efektem działania jakiejś asynchronicznej akcji.

Swoją drogą, nie:
var cords = new Object();

a po prostu:
var cords = {};
Jakub L.

Jakub L. Programista

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Przecież tu o: http://dev.w3.org/geo/api/spec-source.html jest wszystko napisane co i jak.
Adam Pawliczek

Adam Pawliczek Usability expert, UX
designer,
Interaction
specialist

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Jakub L.:
Przecież tu o: http://dev.w3.org/geo/api/spec-source.html jest wszystko napisane co i jak.
Co z tego że jest, skoro można na GL zapytać... ;)

konto usunięte

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

problem już rozwiązany, przeniosłem mój fragment kodu do funkcji i wywołałem ją w callbacku.

Dzięki za pomocne odpowiedzi ;)
Jakub L.:
Przecież tu o: http://dev.w3.org/geo/api/spec-source.html jest wszystko napisane co i jak.

jak ktoś ma problem z PHP to odsyłasz go do manuala PHP, MySQL to do manuala MySQL, a jak z naprawą samochodu to podsyłasz mu podręcznik dla mechaników samochodowych? czyli taka bezmózgowa pomoc :P he heMarcin Skurski edytował(a) ten post dnia 16.11.11 o godzinie 18:28
Adam Pawliczek

Adam Pawliczek Usability expert, UX
designer,
Interaction
specialist

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Marcin Skurski:
Jakub L.:
Przecież tu o: http://dev.w3.org/geo/api/spec-source.html jest wszystko napisane co i jak.
jak ktoś ma problem z PHP to odsyłasz go do manuala PHP, MySQL to do manuala MySQL, a jak z naprawą samochodu to podsyłasz mu podręcznik dla mechaników samochodowych? czyli taka bezmózgowa pomoc :P he he
Dyskutowałbym, po której stronie wystąpił "bezmózg". Nie spotkałem mechanika samochodowego który szukałby pomocy na forum internetowym jak wymienić wycieraczki w samochodzie. Jak widać z "programistami" jest inaczej.
Jakub L.

Jakub L. Programista

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Tak.
Manual jest podstawowym źródłem wiedzy, nie musisz czekać na odpowiedź i tam masz opisaną asynchroniczność z którą najwyraźniej miałeś problem.

GPS może się inicjować do 15 minut (w pesymistycznym przypadku), więc możesz się nielicho zdziwić.
Piotr Koszuliński

Piotr Koszuliński JavaScript ninja

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Akurat moim zdaniem strasznie marudzicie. Bo problemem na moje oko nie była nieznajomość API, a ogólna nieznajomość JS. W tym wypadku odsyłanie człowieka do specyfikacji jest śmieszne. Coś w stylu:
tutaj poczytasz sobie 2h, zrozumiesz API, później przejdź do zagadnień związanych z XYZ, jakieś 4h, a później jeszcze doczytaj o ZĆB - zdążysz w 2h. Na koniec 2 linie kodu i masz to co chciałeś.

To nie było pytanie w stylu forumweb.pl, gdzie dzieciaki wklejają 500 linii kodu i mówią "nie działa". Było ~10 linii i odpowiedni komentarz w czym problem.

Tak więc jeszcze raz - marudzicie.
Jakub L.

Jakub L. Programista

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Ależ daruj, przecież w docu stoi jak wół jak dział getCurrentPosition, jest powiedziane co jest i kiedy wołane i jak to wszystko działa.
No i to: http://www.goldenline.pl/forum/2663786/javascript-prob... z tym co wykonuje się na końcu daje powody aby sądzić, że jednak asynchroniczność jest pewną nowością.

Bo inaczej - czy przekazywanie funkcji do funkcji nie byłoby nieco dziwne?

konto usunięte

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

odnoszę wrażenie, że goldenline to nie najlepsze miejsce jeśli chodzi o porady związane z programowaniem. Pytanie zadałem konkretnie i wprawdzie dostałem konkretne odpowiedzi, ale co niektórzy chyba przywykli do rozkazów i najwyraźniej właśnie tak potraktowali ten wątek, zapominając że jak nie chcą pomóc to nie powinni się udzielać. A za taką pomoc od niechcenia typu sprawdź sobie w manualu, albo uwagi w stylu: bo po co zaglądać do manuala, przecież można napisać na GL to dzięki chłopaki, fajnie że macie tyle wolnego czasu ;)
Jakub L.

Jakub L. Programista

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Jak dotąd spełniasz punkt po punkcie listę.
Zadajesz pytanie na które można samemu znaleźć odpowiedź w specu.
Odymasz się gdy ktoś to zauważa, w sposób doskonale przewidywalny.
Kolejnym punktem jest kasacja profilu.

Najbardziej interesujące jest jednak to, dlaczego nie wpisałeś tego najpierw do googla zanim zadałeś pytanie tutaj.
Piotr Koszuliński

Piotr Koszuliński JavaScript ninja

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Marcin Skurski:
odnoszę wrażenie, że goldenline to nie najlepsze miejsce jeśli chodzi o porady związane z programowaniem. Pytanie zadałem konkretnie i wprawdzie dostałem konkretne odpowiedzi, ale co niektórzy chyba przywykli do rozkazów i najwyraźniej właśnie tak potraktowali ten wątek, zapominając że jak nie chcą pomóc to nie powinni się udzielać.

Możliwe, że niektórzy uważają swój czas za zbyt cenny, ale jeszcze nie nauczyli się nim zarządzać. Wchodzą na GL tracąc czas, chcą odpowiedzieć bo przecież wiedzą, ale w trakcie przypominają sobie, że czas to pieniądz ;>
Albo myślą, że pracodawcy z przyklaskiem potraktują kogoś, kto pokazuje innym swą wyższość :).

konto usunięte

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Jakub L.:
Jak dotąd spełniasz punkt po punkcie listę.
Zadajesz pytanie na które można samemu znaleźć odpowiedź w specu.
Odymasz się gdy ktoś to zauważa, w sposób doskonale przewidywalny.
Kolejnym punktem jest kasacja profilu.

Najbardziej interesujące jest jednak to, dlaczego nie wpisałeś tego najpierw do googla zanim zadałeś pytanie tutaj.

Co się sadzisz? :D szkoda Ci miejsca w bazie? :D powinieneś zostać wróżką skoro wszystko jest dla Ciebie 'doskonale przewidywalne'. He he kasacja profilu, pewnie należysz do tych co myślą że zrujnowali komuś życie i jedynym rozwiązaniem jest skasowanie profilu :D zamierzasz mnie nękać a może przytoczysz mi jakiś inny powód dla którego miałbym to zrobić bo chyba zbyt dużą wagę przywiązujesz do konta na GL, he he nawiązałeś tu jakieś przyjaźnie? :D Skoro ja się odymam to Twoje oburzenie sugeruje, że najwyraźniej poczułeś się odymany :D popisałbym z Tobą jeszcze bo fajnie się czyta wymądrzania od kogoś tak zajebistego jak Ty, ale na pewno znajdzie się jeszcze parę wątków na forum w których czujesz że musisz wkleić linka do dokumentacji i pooburzać się trochę że ktoś nie wie czegoś co jest dla Ciebie oczywiste :D
Jakub L.

Jakub L. Programista

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Ależ ja się nie oburzam, ja stwierdzam fakty.
Konta zrobione po to, aby zadać jedno pytanie nie są kasowane bo ktoś coś o nich źle napisał, tylko dlatego, że pytanie znalazło odpowiedź i nie są już potrzebne.

Oczywistym jest dla mnie sprawdzenie w googlach. To że ktoś tego nie robi jest nie tyle oburzające, co perwersyjnie interesujące.
A uśmiech na twarzy wywołuje utarta droga którą ta dyskusja podąża.

BTW - zima to słaby czas na oprogramowywanie GPSa, marznie się podczas testów.

konto usunięte

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Jakub L.:
Ależ ja się nie oburzam, ja stwierdzam fakty.
Konta zrobione po to, aby zadać jedno pytanie nie są kasowane bo ktoś coś o nich źle napisał, tylko dlatego, że pytanie znalazło odpowiedź i nie są już potrzebne.

Oczywistym jest dla mnie sprawdzenie w googlach. To że ktoś tego nie robi jest nie tyle oburzające, co perwersyjnie interesujące.
A uśmiech na twarzy wywołuje utarta droga którą ta dyskusja podąża.

BTW - zima to słaby czas na oprogramowywanie GPSa, marznie się podczas testów.


he he może po prostu to fakt, że wreszcie znalazłeś dla siebie coś perwersyjnie interesującego wywołuje u Ciebie uśmiech na twarzy :D co do ucierania dróg to sądząc pobieżnie po Twojej zaciętości wnioskuję że często musisz zmieniać buty :D

W google szukałem, ale trzeba jeszcze wiedzieć czego dokładnie szukać, żeby znaleźć rozwiązanie. Poza tym nie znam za dobrze JS i wydawało mi się że problem tkwi w czymś innym, gdybym wiedział jak sam się z tym uporać to nie zawracałbym nikomu głowy, ale nie ważne, chyba szkoda Ci tłumaczyć bo i tak wiesz lepiej i pewnie już masz gotową odpowiedź na tego posta bo to przecież oczywiste i przewidywalne :D wogóle to proponuję żebyś sam dopisał resztę dyskusji bo ja pasuję, mam ciekawsze rzeczy do roboty :D a jak chcesz sobie popisać to zacznij pisać pamiętnik "perwersyjnie interesującej wróżki" :D

a na przyszłość jak będziesz chciał podnieść swoją samoocenę dając linka do dokumentacji z tekstem: no przecież tam wszystko jest napisane, lepiej leć do kuchni i zrób sobie obiad albo coś na kolację, może to Ci lepiej wychodzi niż pomoc innym :D
Adam Pawliczek

Adam Pawliczek Usability expert, UX
designer,
Interaction
specialist

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Niektórzy pracodawcy cenią sobie samodzielność pracowników w zdobywaniu wiedzy i rozwiązywaniu problemów. Zastanowiłbym się więc kto tu wypadł blado, zwłaszcza biorąc pod uwagę absolutną trywialność problemu z którym tutaj przyszedłeś jednocześnie mając się za programistę.
Jakub L.

Jakub L. Programista

Temat: [JavaScript] problem z funkcją wirtualną i zasięgiem...

Marcin Skurski:

he he może po prostu to fakt, że wreszcie znalazłeś dla siebie coś perwersyjnie interesującego wywołuje u Ciebie uśmiech na twarzy :D co do ucierania dróg to sądząc pobieżnie po Twojej zaciętości wnioskuję że często musisz zmieniać buty :D

O widzisz, osiągnąłeś drugi level - zaczynam się dowiadywać ciekawych rzeczy o moim życiu.
W google szukałem, ale trzeba jeszcze wiedzieć czego dokładnie szukać, żeby znaleźć rozwiązanie. Poza tym nie znam za dobrze

Po wrzuceniu przez copy/paste navigator.geolocation.getCurrentPosition pierwszy link to podana dokumentacja, drugi to dokumentacja Mozilli która wspomina i asynchroniczności i tym, że określenie pozycji może zająć długo.

Nie zastanowiło cię to, że w przypadku pobierania pozycji podajesz funkcje jako argumenty dla funkcji? W jakich językach programujesz że jest to dla ciebie cheb powszedni?

W JS popaprane jest to, że potrafi po cichu, przy ogólnie niskim progu wejścia wrzuca ludzi w jedną z trudniejszych działek programowania jakim jest programowanie równoległe.
żebyś sam dopisał resztę dyskusji bo ja pasuję, mam ciekawsze rzeczy do roboty :D a jak chcesz sobie popisać to zacznij pisać pamiętnik "perwersyjnie interesującej wróżki" :D

To byłoby raczej dołujące, taki wątek raz w miesiącu jest interesujący, zebrane razem dałyby raczej dołujący obraz.
a na przyszłość jak będziesz chciał podnieść swoją samoocenę dając linka do dokumentacji z tekstem: no przecież tam wszystko jest napisane, lepiej leć do kuchni i zrób sobie obiad albo coś na kolację, może to Ci lepiej wychodzi niż pomoc innym :D

No proszę, kolejne interesujące fakty z życia.

Następna dyskusja:

Problem z JavaScript




Wyślij zaproszenie do