JavaScript « Цикл, где каждая итерация выполняется через некоторый промежуток времени.
Есть цикл. В нем есть вложенный цикл.
Задача в том чтобы выполнять каждую итерацию цикла через одну секунду(например). Но параметры главного цикла должны передаваться внутреннему.
Т.е. в конце каждого шага идет что-то типа sleep/delay.
Задача мне кажется совсем не тривиальной в реализации на javascript
Задача в том чтобы выполнять каждую итерацию цикла через одну секунду(например). Но параметры главного цикла должны передаваться внутреннему.
Т.е. в конце каждого шага идет что-то типа sleep/delay.
Задача мне кажется совсем не тривиальной в реализации на javascript
1 ответов
Встречал такое. Поступил как.
setInterval и перекладываем все приращения цикла на вызываемый callback. Проверка условий осуществляется там же, по условию завершения цикла делается clearInterval. Доступ к объекту таймера будет возможен если он, например, глобальный (принадлежит window).
Вот пример:
var i = 0;
window.timer = setInterval(function() {
alert(i)
i++
if (i==10) clearInterval(timer)
}, 1500)
Ну, для анимации должно подойти:
setInterval(function(){
//actions..
for (;;) {
//...
}
},1000);
Но он не будет ждать пока выполнится "итерация". Т.е. запуститься следующий вызов примерно через одну секунду после запуска текущего, даже если текущий еще не закончил что-то там отрисовывать.
Если нужно дождаться предыдущего, сделайте на таймаутах, как-то так:
(function animation() {
//actions...
setTimeout(animation,1000);
})();
Если вам нужно посчитать, например, точную скорость движения, чтоб она не менялась от FPS браузера - то погуглите requestAnimFrame