5

자바 스크립트에서 getCurrentPosition 메소드를 사용하고 있습니다. 내가 그것을 클릭하면 "getCurrentPosition"메서드의 실행을 중지 버튼을 구현하고 싶습니다. throw/try/catch 블록을 시도했지만 작동하지 않는 것 같습니다.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; } 

아이디어가 있으십니까? JS에서도 가능합니까? 나는 아이디어가 있었지만 getCurrentPosition이 깨지도록 JS 메서드로 시간 제한을 트리거 할 수 있는지 여부를 알 수 없었습니다.

+0

그것은 그래서 당신이 한 번 시작을 중지하는 것을 허용하지 않습니다 W3 사양을 제외한 렌더링 또는 아무것도 중단하지 말아야 비동기 방법을해야하는데. 버튼을 클릭하면 결과를 그냥 무시 하시겠습니까? 게시 한 코드에는 작업 할 기회가 없으며 이벤트 및 비동기 메소드가 그렇게 작동하지 않습니다. – mattmanser

+0

버튼을 클릭하면 getCurrentPosition (clearTimeout과 비슷한 항목)의 실행을 중지하고 싶습니다. – Laila

답변

10

솔루션 :

방법 navigator.geolocation.getCurrentPosition 비동기 기능, 그래서 그냥 그런 식으로 중지에 포함되지 않습니다이다.

대신에 navigator.geolocation.watchPosition이라는 다른 함수를 사용해야합니다. getCurrentPosition과 같은 방식으로 작동하지만, 유용한 경우에는 navigator.geolocation.clearWatch이라는 또 다른 함수가 있으며이 함수는 watchPosition을 중지하는 데 사용됩니다.

예 :

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

고마워요,이게 내가 필요한 것입니다! – Laila