gpt4 book ai didi

javascript - jquery回调不使用全局变量

转载 作者:行者123 更新时间:2023-12-02 20:26:30 25 4
gpt4 key购买 nike

我有一个小脚本,可以从 geoplugin 获取位置...我想将返回的坐标存储在我全局声明的变量中...但由于某种原因,回调不会读取它。如何让回调使用全局变量?

if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
myLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
}, function() {
noLocation();
},{timeout: 20});
}
else if (google.gears) {
var geo = google.gears.factory.create('beta.geolocation');
geo.getCurrentPosition(function(position) {
myLocation = new google.maps.LatLng(position.latitude,position.longitude);
}, function() {
noLocation();
});
}
else {
noLocation();
}
function noLocation() {
$.getJSON("http://www.geoplugin.net/json.gp?id=117.201.92.17&jsoncallback=?",
function(data) {
if (data != "" && data.geoplugin_latitude != "")
myLocation = new google.maps.LatLng(data.geoplugin_latitude, data.geoplugin_longitude)
else
myLocation = new google.maps.LatLng()
});

}

出于某种原因,我认为这是因为异步调用......我可以如何解决这个问题吗?

最佳答案

看起来它正在将其存储在全局变量“myLocation”中。但是,您可能试图在实际设置值之前读取该值。异步调用的工作方式是立即返回,然后在将来的某个时候,如果请求得到响应,它将调用回调函数。其余代码将同时继续运行。

在分配给 myLocation 后尝试发出“警报”,看看它是否正在被填充:

myLocation =  new google.maps.LatLng(data.geoplugin_latitude, data.geoplugin_longitude)
alert(myLocation)

关于javascript - jquery回调不使用全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4770572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com