Я показываю набор изображений в виде наложения с помощью Google Maps. Отображение этих изображений должно происходить в бесконечном цикле, но большинство браузеров это обнаруживают и выводят предупреждение.
Есть ли способ создать бесконечный цикл в JavaScript, чтобы браузер не останавливал его и не предупреждал об этом?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте setInterval или setTimeout.
Вот пример:
(show = (o) => setTimeout(() => {
console.info(o)
show(++o)
}, 1000))(1);.as-console-wrapper { max-height: 100% !important; top: 0; }Возможно, попробуйте использовать таймер, который извлекает следующее изображение каждый раз, когда он тикает, к сожалению, я не знаю никакого JavaScript, поэтому я не могу предоставить образец кода
Вы должны использовать таймер для непрерывного вывода новых изображений вместо бесконечного цикла. Проверьте функцию setTimeout(). Предостережение заключается в том, что вы должны вызвать его в функции, которая вызывает сама себя, чтобы она снова подождала. Пример взят из w3schools:
var c = 0
var t;
function timedCount() {
document.getElementById('txt').value = c;
c = c + 1;
t = setTimeout("timedCount()", 1000);
}<form>
<input type = "button" value = "Start count!" onClick = "timedCount()">
<input type = "text" id = "txt">
</form>Вместо использования бесконечного цикла создайте таймер, который продолжает срабатывать каждые n секунд - вы получите аспект «работать вечно» без зависания браузера.
function foo() {
alert('hi');
setTimeout(foo, 5000);
}
Затем просто используйте действие типа "onload", чтобы запустить 'foo'
Следующий код устанавливает интервал и устанавливает изображение для следующего изображения из массива источников изображений каждую секунду.
function setImage(){
var Static = arguments.callee;
Static.currentImage = (Static.currentImage || 0);
var elm = document.getElementById("imageContainer");
elm.src = imageArray[Static.currentImage++];
}
imageInterval = setInterval(setImage, 1000);
Если это соответствует вашему случаю, вы можете продолжать загружать новые изображения в ответ на взаимодействие с пользователем, например этот сайт делает (просто прокрутите вниз).
Просто формальный ответ:
var i = 0;
while (i < 1) {
do something...
if (i < 1) i = 0;
else i = fooling_function(i); // must return 0
}
Думаю, ни один браузер не обнаружит такие вещи.
Тем не менее, браузеры сообщат вам, если операция любой занимает слишком много времени. Ваша петля не исключение. Единственный способ - использовать setInterval / setTimeout (как уже отмечалось).
Вы должны использовать
timedCountвместо"timedCount()". Нет причин, по которым вам нужно оценивать вызов функции, а не просто передавать функцию напрямую.