我实施了HTML Geolocation,暂停时间为10秒。 然而,失败' 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创建另一个超时。