3

我已经实现了 10 秒超时的 HTML 地理定位。但是,“失败”回调不会在 10 秒后触发。(如果用户拒绝分享他的位置,则调用“失败”回调)。

我的代码有什么问题?

这是我的代码:

function getLocation(){
        var deferred = $q.defer();
        var success = function(position){
            deferred.resolve(position);
        };
        var failure = function(error){
            deferred.reject(error);
        };
        var options = {timeout: 10000};
        if ($window.navigator && $window.navigator.geolocation) {
            $window.navigator.geolocation.getCurrentPosition(success, failure, options);
        }
        else {
            deferred.reject("Unsupported browser");
        }
        return deferred.promise;
    }

解决了

问题是地理位置自己的超时仅在用户同意共享他的位置时才开始。我想处理用户不同意并且没有触发回调的情况。解决方案是使用 $timeout 创建另一个超时。

4

0 回答 0