Какой лучший способ контролировать скорость цикла?
Я использую Geocoder API Google и достигаю ограничений скорости, используя цикл ниже. Какой лучший подход, чтобы замедлить это? 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 ответ
Поместите весь код в ваш цикл внутри функции под названием mySuperCoolLoopFunction
затем используйте этот код для вызова этой функции через указанный интервал:
var numberOfMilliseconds = 1000
setInterval(mySuperCoolLoopFunction, numberOfMilliseconds)
Вы можете прочитать все о функции setInterval Javascript здесь, как указал Пойнти. Первый аргумент - это функция, а второй аргумент - это количество миллисекунд ожидания до повторного вызова функции.
Вы можете назначить результат setInterval
вызовите переменную, и это позволит вам остановить интервал в какой-то момент. Как это:
myInterval = setInterval(coolFunction, 1000)
...
clearInterval(myInterval)