如何使用具有enableHighAccuracy的地理位置来测试超时错误逻辑

时间:2018-07-19 21:05:22

标签: w3c-geolocation

我正在使用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秒钟捕获一次位置,因此执行此操作似乎在逻辑上有点多余。

0 个答案:

没有答案