Moje pytanie dotyczy Javascript. Mam funkcję oddzwaniania, która odbiera obiekt położenia po pomyślnym wywołaniu zwrotnym.JavaScript przypisywanie zwracanej wartości funkcji oddzwaniania do zmiennej globalnej
Problem polega na tym, że kiedy próbuję ustawić właściwości obiektu położenia na zmienną globalną przy udanym wywołaniu zwrotnym, po prostu nie pozwala mi tego zrobić, a globalne pozostaje nieokreślone.
Zamiast tego, zamiast bezpośrednio ustawiać właściwości obiektu na zmienne globalne, próbuję zwrócić je za pomocą funkcji wywołania zwrotnego, ale nie mogłem znaleźć sposobu, aby ustawić wartość zwracaną przez funkcję wywołania zwrotnego na globalną. zmienna.
Oto uproszczony kod.
var x;
navigator.geolocation.getCurrentPosition(onSuccess, onError);
//on Successful callback receives a Position Object
function onSuccess(position) {
var coords = position.coords;
x=coords; // Setting directly to an object does not work x still remains undefined after succesful callback
return coord; // Trying to set this to a global object
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
rzeczywiście dobry punkt, moja odpowiedź jest głupie niedopatrzenie z mojej strony. kod nie jest liniowy, więc musisz zrobić to, co chcesz zrobić ze współrzędnymi wywołania zwrotnego, aby upewnić się, że wartość została powiązana. – WickyNilliams
Masz rację. Funkcja getCurrentPosition próbuje uzyskać geolokalizację, która jest asynchroniczna dlatego gdy próbuję uzyskać do niego dostęp ze zmiennej globalnej, prawdopodobnie nie jest ona ustawiana i zwracana undefined.Isnt czy istnieje sposób przypisania zmiennej do wartości zwracanej po wykonaniu funkcji asynchronicznej z jej zadaniem? –
@Torukojin: Nie, gdzie należy zwrócić wartość? Jak już wspomniano, kod działa asynchronicznie. Z tego powodu wartość jest przekazywana jako parametr do funkcji wywołania zwrotnego, dzięki czemu można z niej korzystać i robić, co tylko zechce. Gdyby można było "zwrócić" wartość, to zrobiłby to "getCurrentPosition". Ale tak nie jest, dlatego zapewniasz oddzwonienie. Może znajdziesz [tego artykułu] (http://felix-kling.de/blog/2011/01/14/how-to-return-data-from-an-ajax-call/) pomocne w zrozumieniu problemu (ale nie jestem tak dobry w pisaniu;)) –