2012-05-24 184 views
1

好吧,這是我的JS功能:異步調用

function GetLatLong() { 
    var geocoder = new google.maps.Geocoder(); 
    var address = $('#txtAddress').val() + ', ' + $('#txtCity').val() + ', ' + $find('drpState').get_text() + ', ' + $find('drpCountry').get_text(); 
    var result = false; 
    geocoder.geocode({ 'address': address }, function (results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      var location = results[0].geometry.location; 
      $('#hiddenLatLong').val(location); 
      result = true; 
     } 
     else { 
      alert("Geocode was not successful for the following reason: " + status); 
      result = true; 
     } 
    }); 

    return result; 
} 

現在,我想是的,我想一旦我存儲在隱藏字段中的值返回結果。這裏發生的是,我在按鈕單擊時調用此函數,但因爲調用是異步的,所以它在click上返回false,並且我無法在隱藏字段中獲得結果值。有沒有什麼方法可以讓我等待或在隱藏領域獲得一些解決辦法?

回答

1

地理編碼函數中的第二個參數是一個回調函數,如果地理編碼結果返回,則該函數將被調用。因此,從您提供的代碼中,如果Google返回結果,則應設置隱藏值。

但是,您的GetLatLong()功能提前完成,因此返回false。所以你不應該讓你的處理依賴於這個方法的返回值。