2012-02-01 50 views
0

我怎樣才能表達這種封閉內有setTimeout函數之前,或者在運行API後創建2秒鐘暫停。請注意,geocoder.geocode是異步的。的JavaScript截流用setTimeout函數

function srPerformGeocode(addressToArray, nextRecord){        

     var address = addressToArray.join(","); 
     console.log(address);      

     if (geocoder){             
      glDelay = true; 
      geocoder.geocode({ 'address': address.trim() }, function 
      (results, status) { 
       // count number of geocodings attempted 
       glGeocodeCount ++;              
       if (status == google.maps.GeocoderStatus.OK){    
       } 
       else{ 
       } 
      }); 
     } 
} 
+0

爲什麼:當調用第三方API的反覆,這是禮貌限制請求,有時是必要的。 – 2012-02-01 13:09:13

回答

2
setTimeout (function() 
{ 
    geocoder.geocode(...); 

}, 2000); 
+0

我試過這個變種。當重複調用時,它似乎只在函數第一次被調用時才起作用。隨後的電話似乎被忽略。 – 2012-02-01 13:18:33

+0

@MustaphaGeorge:您需要向我們展示了未使用的代碼。我甚至會立即下注你已經陷入'setTimeout(myFunction(),200)'陷阱(或類似的) – hugomg 2012-02-01 14:06:02