5

Tôi đang sử dụng phương thức getCurrentPosition trong Javascript. Tôi muốn thực hiện một nút dừng việc thực hiện phương thức "getCurrentPosition" khi nó được nhấp. Tôi đã thử với các khối ném/thử/nắm bắt nhưng dường như không hoạt động:Dừng thực hiện phương thức 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; } 

Bất kỳ ý tưởng nào? Thậm chí có thể trong JS không? Tôi đã có một ý tưởng nhưng tôi không biết nếu nó có thể kích hoạt một thời gian chờ với một phương pháp JS để getCurrentPosition phá vỡ?

+0

Đó là nghĩa vụ phải là một phương pháp không đồng bộ vì vậy không nên dừng lại render hoặc bất cứ điều gì nhưng spec w3 không cho phép bạn để ngăn chặn nó một lần bắt đầu. Bạn chỉ muốn bỏ qua kết quả nếu nút được nhấp? Mã bạn đăng không có cơ hội làm việc, sự kiện và phương pháp asynch không hoạt động theo cách đó. – mattmanser

+0

Khi nút được bấm, tôi muốn dừng thực hiện getCurrentPosition (với một cái gì đó tương tự như clearTimeout). – Laila

Trả lời

10

Giải pháp:

Phương pháp navigator.geolocation.getCurrentPosition là một chức năng không đồng bộ nên không được tính vào ngăn chặn nó chỉ như thế.

Thay vào đó, bạn nên sử dụng chức năng khác được gọi là: navigator.geolocation.watchPosition. Nó hoạt động theo cùng cách như getCurrentPosition nhưng điều làm cho nó hữu ích trong trường hợp của bạn là một hàm khác được gọi là navigator.geolocation.clearWatch và hàm đó được sử dụng để dừng watchPosition.

Ví dụ:

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

Cảm ơn bạn, đây chính xác là những gì tôi cần! – Laila

Các vấn đề liên quan