将变量保存在navigator.geolocation.getCurrentPosition之外?(JavaScript的)

Der*_*rek 6 javascript geolocation navigator w3c-geolocation

我正在尝试使用js的范围从navigator.geolocation.getCurrentPosition中提取变量

var lat;
function callback (position) {
    lat = position.coords.latitude;
}
navigator.geolocation.getCurrentPosition(callback,fail,{timeout:10000});
// after getCurrentPosition succeeds
alert(lat); // this alerts null
Run Code Online (Sandbox Code Playgroud)

由于范围,上面的代码无法在lat变量中存储position.coords.latitude.有没有办法做到这一点?

gdo*_*ica 2

你必须记住 async\ajax 的性质。

这是您的代码的执行顺序:

var lat;
alert(lat); // this alerts null
navigator.geolocation.getCurrentPosition(callback,fail,{timeout:10000});
function callback (position) {
    lat = position.coords.latitude;
}
Run Code Online (Sandbox Code Playgroud)

这就是你得到 null 的原因。异步!异步!:)