同步设置javascript函数外的变量

时间:2014-07-29 16:28:18

标签: javascript

在本文下面有代码我尝试过 我想实现这个:外部函数geocoder.geocode有一个名为 var address 的变量。 geocoder.geocode ...从latlng获取地址,我想通过此row address = results[1].formatted_address;设置地址 但可变地址可能在外面不可见。
致电时:alert('Inside: '+ address)地址正确设置, 但是当我在函数alert ('Outside address: '+address)之外调用它时,地址返回空字符串,所以设置地址可能只是本地,我想要实现的是将其设置在功能之外,以便能够使用此功能。我错了什么?

var geocoder = new google.maps.Geocoder();
var myPosition = new google.maps.LatLng(41.850033, -87.6500523);
var address = "";

            //get address
            geocoder.geocode({'latLng': myPosition}, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    if (results[1]) {
                        address = results[1].formatted_address;
                        alert('Inside: '+ address);
                    } else {
                        alert('No results found');

                    }
                } else {
                    alert('Geocoder failed due to: ' + status);
                }
            });
alert ('Outside address: '+address);

修改
事实证明,它是同步通信的问题。在执行geocoder.geocode之前执行外部警报。那么我可以以某种方式停止执行脚本,直到它将被执行?以某种方式同步它,以便能够使用此变量吗?

1 个答案:

答案 0 :(得分:0)

我检查的第一件事是我的操作顺序,可能是在您的地理编码器执行之前警报正在执行,尝试在整个javascript运行后在控制台视图中运行警报。

如果地址仍未声明,请在您的行上执行此操作。

window.address = results[1].formatted_address;

这会将地址设置为窗口变量,这与在任何函数之外声明var地址的范围相同。