我正在使用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);
}
});
}
答案 0 :(得分:1)
将循环中的所有代码放在名为mySuperCoolLoopFunction
的函数中,然后使用此代码以指定的时间间隔调用该函数:
var numberOfMilliseconds = 1000
setInterval(mySuperCoolLoopFunction, numberOfMilliseconds)
你可以阅读所有关于Javascript的setInterval函数here,正如Pointy指出的那样。第一个参数是一个函数,第二个参数是在再次调用函数之前等待的毫秒数。
您可以将setInterval
调用的结果分配给变量,这样您就可以在某个时刻停止间隔。像这样:
myInterval = setInterval(coolFunction, 1000)
...
clearInterval(myInterval)