Estoy usando navigator.geolocation.watchPosition
en JavaScript, y quiero una forma de tratar con la posibilidad de que el usuario pueda enviar un formulario confiando en la ubicación antes de que watchPosition
haya encontrado su ubicación.¿Esperar hasta que una condición sea verdadera?
Idealmente, el usuario vería periódicamente el mensaje "Esperando ubicación" hasta que se obtuviera la ubicación, luego se enviaría el formulario.
Sin embargo, no estoy seguro de cómo implementar esto en JavaScript dada su falta de una función wait
.
código actual:
var current_latlng = null;
function gpsSuccess(pos){
//console.log('gpsSuccess');
if (pos.coords) {
lat = pos.coords.latitude;
lng = pos.coords.longitude;
}
else {
lat = pos.latitude;
lng = pos.longitude;
}
current_latlng = new google.maps.LatLng(lat, lng);
}
watchId = navigator.geolocation.watchPosition(gpsSuccess,
gpsFail, {timeout:5000, maximumAge: 300000});
$('#route-form').submit(function(event) {
// User submits form, we need their location...
while(current_location==null) {
toastMessage('Waiting for your location...');
wait(500); // What should I use instead?
}
// Continue with location found...
});
Piense asincrónicamente. Busque 'setTimeout'. –
¿Quizás de manera asíncrona y recursiva, recursivamente llame a setTimeout hasta que current_latlng tenga algún valor? – Richard
entiende el idioma primero antes de culparlo. No hay ninguna "falta" de una función de 'espera' de seguro. – jAndy