5

Ich benutze die Methode getCurrentPosition in Javascript. Ich möchte eine Schaltfläche implementieren, die die Ausführung der Methode "getCurrentPosition" stoppt, wenn darauf geklickt wird. Ich versuchte mit throw/try/catch Blöcke, aber es scheint nicht zu funktionieren:Stoppen Sie die Ausführung der Methode 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; } 

Irgendwelche Ideen? Ist es überhaupt in JS möglich? Ich hatte eine Idee, aber ich weiß nicht, ob es möglich ist, ein Timeout mit einer JS-Methode auszulösen, so dass die getCurrentPosition bricht?

+0

Es soll eine asynchrone Methode sein, so sollte doch die w3 spec machen oder irgendetwas nicht aufhören erlaubt Ihnen nicht, es einmal begonnen zu stoppen. Möchten Sie das Ergebnis nur ignorieren, wenn auf die Schaltfläche geklickt wird? Der von Ihnen gepostete Code hat keine Chance zu arbeiten, Ereignisse und asynchrone Methoden funktionieren nicht auf diese Weise. – mattmanser

+0

Wenn die Schaltfläche geklickt wird, möchte ich die Ausführung von getCurrentPosition stoppen (mit etwas ähnlich wie clearTimeout). – Laila

Antwort

10

Lösung:

Methode navigator.geolocation.getCurrentPosition ist eine asynchrone Funktion nicht auf, so zählen sie einfach so zu stoppen.

Sie sollten stattdessen andere Funktion namens: navigator.geolocation.watchPosition verwenden. Es funktioniert auf die gleiche Weise wie getCurrentPosition, aber was es in Ihrem Fall nützlich macht, ist eine andere Funktion namens navigator.geolocation.clearWatch und diese Funktion wird verwendet, um WatchPosition zu stoppen.

Beispiel:

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

Danke, Sir, genau das habe ich gebraucht! – Laila

Verwandte Themen