Javascript 谷歌地图API使用异步请求吗

Javascript 谷歌地图API使用异步请求吗,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我编写了一个小应用程序来测试GoogleMapAPI,我注意到我的函数没有按照预期的顺序执行。请看下面我的代码 <!DOCTYPE html><htm><head><title></title> <script src="http://maps.google.com/maps/api/js?sensor=false"></script> <script src="https://maps.googleap

我编写了一个小应用程序来测试GoogleMapAPI,我注意到我的函数没有按照预期的顺序执行。请看下面我的代码

<!DOCTYPE html><htm><head><title></title>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false">  </script>
<script>
//Global Variables
var lat, lng, _Address;
var geocoder = new google.maps.Geocoder();

function getReverseGeocodingData(lat, lng) {
var latlng = new google.maps.LatLng(lat, lng);

// Make the Geocode request    
geocoder.geocode({ 'latLng': latlng }, function (searchResults,searchStatus)   {
    if (searchStatus !== google.maps.GeocoderStatus.OK) {
        alert("Your search yields " + searchStatus);
    }
    // Checking to see if the Geocode Status is OK before proceeding
    if (searchStatus == google.maps.GeocoderStatus.OK) {
        console.log(searchResults);
        _Address = (searchResults[0].formatted_address);            
        alert("First time Address is displayed" + _Address);
    }
   }); 
}

function splitAddress() {    
var addressArr = _Address.split(',');     
//addressArr will be used later   
}

// This function is called when the submit button is clicked
function SearchAddress() {        
    geocoder.geocode({ 'address': "77 Massachusetts Ave, Cambridge, MA 02139" }, function (searchResults, searchStatus) {
        var location = searchResults[0].geometry.location;
        lat = location.lat();
        lng = location.lng();            
        getReverseGeocodingData(lat, lng);
        alert("Second time Address is displayed" + _Address);
        splitAddress();
    });}
</script></head><body><div><input type="button" value="Submit" onclick="SearchAddress()"></div></body></html>

//全局变量
var lat,液化天然气,地址;
var geocoder=new google.maps.geocoder();
函数getReverseGeocodingData(lat、lng){
var latlng=新的google.maps.latlng(lat,lng);
//发出地理编码请求
geocoder.geocode({'latLng':latLng},函数(searchResults,searchStatus){
if(searchStatus!==google.maps.GeocoderStatus.OK){
警报(“您的搜索结果”+搜索状态);
}
//继续之前,检查地理代码状态是否正常
if(searchStatus==google.maps.GeocoderStatus.OK){
console.log(搜索结果);
_地址=(搜索结果[0]。格式化的地址);
警报(“第一次显示地址”+_地址);
}
}); 
}
函数splitAddress(){
var addressArr=_Address.split(',');
//addressArr将在以后使用
}
//单击“提交”按钮时调用此函数
函数SearchAddress(){
geocoder.geocode({‘地址’:“马萨诸塞州剑桥大街77号,马萨诸塞州02139”},函数(搜索结果,搜索状态){
var location=searchResults[0]。geometry.location;
lat=location.lat();
lng=location.lng();
获取反向编码数据(lat、lng);
警报(“第二次显示地址”+_地址);
splitAddress();
});}
当我在线路警报上设置断点(“显示第一次地址”+\u地址)时,我可以看出此警报函数在线路警报之前执行(“显示第二次地址”+\u地址)


但是,行警报(“第二次显示地址”+_Address)似乎是第一次执行,并且_Address的值未定义。因此,我的问题是,如果第二个警报函数在第一个警报函数之后执行,Google Map API是否发出异步请求。

是的,当您调用
geocoder.geocode
时,Google Maps API使用异步请求

这是我的

访问地理编码服务是异步的,因为谷歌地图 API需要调用外部服务器