5

Sto utilizzando il metodo getCurrentPosition in Javascript. Vorrei implementare un pulsante che interrompe l'esecuzione del metodo "getCurrentPosition" quando viene cliccato. Ho provato con i blocchi throw/try/catch ma non sembra funzionare:Arresta l'esecuzione del metodo getCurrentPosition

 

    try { 
     $('#cancel').on("click", function() { 
      $.mobile.loading('hide'); 
      throw "stop"; 
     }); 
     navigator.geolocation.getCurrentPosition(foundLocation, noLocation, {enableHighAccuracy: true, timeout : 30000 }); 
    } 
    catch (er) { alert(er); return false; } 

Qualche idea? È persino possibile in JS? Ho avuto un'idea ma non so se è possibile attivare un timeout con un metodo JS in modo che si interrompa getCurrentPosition?

+0

Si suppone che sia un metodo asincrono quindi non dovrebbe interrompere il rendering o qualcosa, ma le specifiche w3 non consente di smettere una volta iniziato. Vuoi semplicemente ignorare il risultato se si fa clic sul pulsante? Il codice che hai postato non ha alcuna possibilità di funzionare, gli eventi e i metodi asynch non funzionano in questo modo. – mattmanser

+0

Quando si fa clic sul pulsante, voglio interrompere l'esecuzione di getCurrentPosition (con qualcosa di simile a clearTimeout). – Laila

risposta

10

Soluzione:

Metodo navigator.geolocation.getCurrentPosition è una funzione asincrona quindi non contare su fermarla così.

si dovrebbe utilizzare invece altre funzione chiamata: navigator.geolocation.watchPosition. Funziona allo stesso modo di getCurrentPosition ma ciò che lo rende utile nel tuo caso è un'altra funzione chiamata navigator.geolocation.clearWatch e tale funzione viene utilizzata per arrestare watchPosition.

Esempio:

geoLoc = navigator.geolocation; 
watchID = geoLoc.watchPosition(showLocation, errorHandler, options); 
geoLoc.clearWatch(watchID); 
+0

Grazie signore, questo è esattamente ciò di cui avevo bisogno! – Laila

Problemi correlati