我正在使用W3C GeoLocation API捕获用户的位置。这样做时,我使用enableHighAccuracy=true
在我的错误回调中,如果原始请求失败并带有enableHighAccuracy=false
代码,则我有一些逻辑可以使用error.TIMEOUT
重试。到目前为止,由于我没有收到任何超时错误,因此在测试中无法达到目标。有谁知道如何强制发生超时错误,以便我可以测试后备逻辑?
使用的逻辑与此类似:(为简洁起见,不包括成功回调)
var retryCount = 0;
function captureGeoLocation(useHighAccuracy){
if(navigator.geolocation){
var options = {};
options.timeout = 5000;
options.maximumAge = 0;
options.enableHighAccuracy = useHighAccuracy;
navigator.geolocation.watchPosition(receiveCapturedData, receiveCaptureError, options);
}
}
function receiveCaptureError(error){
if(error.code == error.TIMEOUT && retryCount <= 2){
retryCount++;
captureGeoLocation(false);
}
}
此外,由于我正在使用watchPosition,所以这种逻辑甚至有必要吗? watchPosition会在我的超时设置为5000的情况下每5秒钟捕获一次位置,因此执行此操作似乎在逻辑上有点多余。