我已经实现了 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 创建另一个超时。