浏览器地理定位API没有抛出错误或尊重超时



一段时间以来,我一直觉得这就像黑魔法一样,我希望你们中的一个能帮我弄清楚。我在JS中有一个地理定位函数,如下所示:

// User Position
export function getPosition(options) {
return new Promise(function (resolve, reject) {
function success(pos) {
var crd = pos.coords;
console.log('we have succeeded with ' + crd)
resolve(pos);
}
function failure(err) {
console.warn(`ERROR(${err.code}): ${err.message}`);
reject();
}
var options = {
enableHighAccuracy: true,
timeout: 5500,
maximumAge: 6000
};
// debugger;
navigator.geolocation.getCurrentPosition(success, failure, options);
});
};

,在async函数中调用:

let position = await getPosition();

我已经确定了两种承诺永远不会解决的情况,即使设置了超时,也可以预测。

  • 浏览器在iOS或MacOS中更新,新的隐私设置撤销位置访问。
  • 在iOS设备上从safari或chrome的链接打开

getPosition()函数将无限期挂起,或远远超过提示用户之前的超时时间。

是我在代码中遗漏了一些东西,还是这是特定于Apple操作系统的新隐私设置,其中地理定位API正在下降?

如果你看这里,你会看到我的匹配观察:-

const TIMEOUT_IS_USELESS
= Number.POSITIVE_INFINITY;

trackerId = navigator.geolocation.watchPosition(filterLocation, locError, {
enableHighAccuracy: accurate,
maximumAge: maxLocAge,
timeout: TIMEOUT_IS_USELESS
});

相关内容

最新更新