Hey man porque no le pones un return a la funcion o una var con true o false, asi desde tu funcion hasta que no este true por ejemplo devuelve y tomas el valor de la variablemmm mira, hice la prueba, y nisiquiera me devuelve undefined como al principio, ahora no devuelve nada...--
El 29 de mayo de 2013 11:47, Mario Zorz <mariozorz@gmail.com> escribió:
La respuesta rapida, sería hacer otra funcion que haga lo que vos quieras y la llamas en secuencia después de que te aseguraste de tener el valor actualizado de la variable pais. Algo asi funcionaría:
var pais;function initialize(callback) {var loc = {};var geocoder = new google.maps.Geocoder();if(google.loader.ClientLocation) {loc.lat = google.loader.ClientLocation.latitude;loc.lng = google.loader.ClientLocation.longitude;
var latlng = new google.maps.LatLng(loc.lat, loc.lng);geocoder.geocode({'latLng': latlng}, function(results, status) {if(status == google.maps.GeocoderStatus.OK) {pais = results[0]['address_components'][5]['short_name'];console.log(pais);if (callback)callback();};});}}
function callback(){google.load("maps", "3.x", {other_params: "sensor=false", callback:initialize});console.log(pais);}
De hecho es todo un tema por la naturaleza de javascript.
Aca podes encontrar algunas cosas que te saquen del paso
Pero te recomiendo que intentes leer sobre las cuestiones más básicas de funcionamiento de javascript, sincronismo y demás, en esencia es lo que te va a permitir entender el lenguaje y cómo usarlo para que haga lo que vos quieras que haga.
Aca encontré algo que quizas aclare el panorama:
Simplemente googlea y a probar :)Slds
El 29 de mayo de 2013 11:23, Maximiliano Burgos <maxib2007@gmail.com> escribió:
y como la vuelvo sincrona, o como me guardo ese valor?
El 29 de mayo de 2013 11:21, Mario Zorz <mariozorz@gmail.com> escribió:
Esto no es que se pierde, es que cuando ejecutas en console.log(pais) de abajo de todo, todavia no se ha terminado de ejecutar la funcion asincrona que le pasas como parametro a geocoder.geocode(), que es donde haces la nueva asignación a pais con pais = results[0]['address_components'][5]['short_name'];
--
El 29 de mayo de 2013 11:19, Maximiliano Burgos <maxib2007@gmail.com> escribió:
--No se porque, ni si le estoy errando al concepto, pero quiero que en una funcion se guarde el valor de una variable global, pero fuera de la misma, el valor se pierde. Mi code:
var pais;function initialize() {var loc = {};var geocoder = new google.maps.Geocoder();if(google.loader.ClientLocation) {loc.lat = google.loader.ClientLocation.latitude;loc.lng = google.loader.ClientLocation.longitude;
var latlng = new google.maps.LatLng(loc.lat, loc.lng);geocoder.geocode({'latLng': latlng}, function(results, status) {if(status == google.maps.GeocoderStatus.OK) {pais = results[0]['address_components'][5]['short_name'];console.log(pais);};});}}
google.load("maps", "3.x", {other_params: "sensor=false", callback:initialize});
console.log(pais);
Siendo pais la var global, cuando sale de la funcion ya no tiene valor :/
Has recibido este mensaje porque estás suscrito al grupo "GTUG BsAs" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a gtug-bsas+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Has recibido este mensaje porque estás suscrito al grupo "GTUG BsAs" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a gtug-bsas+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
--
Has recibido este mensaje porque estás suscrito al grupo "GTUG BsAs" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a gtug-bsas+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
--
Has recibido este mensaje porque estás suscrito al grupo "GTUG BsAs" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a gtug-bsas+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Has recibido este mensaje porque estás suscrito al grupo "GTUG BsAs" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a gtug-bsas+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Este valor lo tomas con un bucle while(este en false) .......
Mientras mi var no este en true espero
While(!mi_return)
{
pais = func_retorn();
}
//ahora aca si tengo mi var cargada.
0 comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.