什么是控制循环速度的最佳方法?

时间:2014-10-09 00:27:47

标签: javascript google-maps-api-3 google-geocoder

我正在使用Google的Geocoder api,并且我正在使用下面的循环来达到速率限制。什么是降低速度的最佳方法? results数组长度有所不同,但不超过50个项目。

for (var key in data) {
var results = data[key];
var address = results['Address'];

//test
if (geocoder) {
  geocoder.geocode( { 'address': address}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
      map.setCenter(results[0].geometry.location);

        var infowindow = new google.maps.InfoWindow(
            { content: '<b>'+address+'</b>',
              size: new google.maps.Size(150,50)
            });

        var marker = new google.maps.Marker({
            position: results[0].geometry.location,
            map: map, 
            title:address
        }); 
        google.maps.event.addListener(marker, 'click', function() {
            infowindow.open(map,marker);
        });

      } else {
        alert("No results found");
      }
    } else {
      alert("Geocode was not successful for the following reason: " + status);
    }
  });
}

1 个答案:

答案 0 :(得分:1)

将循环中的所有代码放在名为mySuperCoolLoopFunction的函数中,然后使用此代码以指定的时间间隔调用该函数:

var numberOfMilliseconds = 1000
setInterval(mySuperCoolLoopFunction, numberOfMilliseconds)

你可以阅读所有关于Javascript的setInterval函数here,正如Pointy指出的那样。第一个参数是一个函数,第二个参数是在再次调用函数之前等待的毫秒数。

您可以将setInterval调用的结果分配给变量,这样您就可以在某个时刻停止间隔。像这样:

myInterval = setInterval(coolFunction, 1000)
...
clearInterval(myInterval)