【问题标题】:Stop execution of the getCurrentPosition method停止执行 getCurrentPosition 方法
【发布时间】:2013-04-03 20:02:43
【问题描述】:

我在 Javascript 中使用 getCurrentPosition 方法。我想实现一个按钮,当它被单击时停止执行“getCurrentPosition”方法。我尝试使用 throw/try/catch 块,但它似乎不起作用:

尝试 { $('#cancel').on("点击", function() { $.mobile.loading('隐藏'); 抛出“停止”; }); navigator.geolocation.getCurrentPosition(foundLocation, noLocation, {enableHighAccuracy: true, timeout : 30000 }); } 捕捉(呃){警报(呃);返回假; }

有什么想法吗?在 JS 中甚至有可能吗? 我有一个想法,但我不知道是否可以使用 JS 方法触发超时,以便 getCurrentPosition 中断?

【问题讨论】:

  • 它应该是一个异步方法,所以不应该停止渲染或任何东西,但 w3 规范不允许你在启动后停止它。如果单击按钮,您是否只想忽略结果?您发布的代码没有机会工作,事件和异步方法不能那样工作。
  • 当按钮被点击时,我想停止执行getCurrentPosition(类似于clearTimeout)。

标签: javascript jquery jquery-mobile google-maps-api-3 geolocation


【解决方案1】:

解决方案:

方法 navigator.geolocation.getCurrentPosition 是一个异步函数,所以不要指望就这样停止它。

您应该改用其他函数:navigator.geolocation.watchPosition。它的工作方式与 getCurrentPosition 相同,但在您的情况下有用的是另一个名为 navigator.geolocation.clearWatch 的函数,该函数用于停止 watchPosition。

示例:

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

【讨论】:

  • 谢谢先生,这正是我需要的!
  • 要记住的一点是:watchPosition 将在每次设备位置发生变化时调用处理函数,而 getCurrentPosition 只会调用该函数一次。这可能会导致您的程序出现意外问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-14
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多