Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Цикл + таймер (https://javascript.ru/forum/misc/73256-cikl-tajjmer.html)

.PropLog 02.04.2018 10:16

Цикл + таймер
 
Подскажите как подружить таймер с циклом?
while (z < step) {
                c += z;
            console.log(z, c);
                    while (i < idNumberBack) {
                        var TopLeft = arrayTopLeft[c];
                        var returnId = ("object" + i);
                        document.getElementById(returnId).style.cssText = TopLeft;
                        c += step;
                        i++;
                       
                    }
                c = 1;
                i = 1;
                z++;
            }

внутренний цикл должен исполняться n-раз в секунду

рони 02.04.2018 10:42

Цитата:

Сообщение от .PropLog
Подскажите как подружить таймер с циклом?

никак!!!
медитировать тут
JS-Анимация

Malleys 02.04.2018 18:05

рони,

<div id="test"></div>
<script>
function delay(duration) {
	return new Promise(resolve => {
		setTimeout(resolve, duration);
	});
}

(async () => {
	let counter = 0;

	while(true) {
		await delay(500);
		test.textContent = counter++;
	}
})();
</script>

рони 02.04.2018 18:59

Malleys,
ок, спасибо за науку, но проще один setTimeout, без while, await, Promise ...
<div id="test"></div>
<script>
var counter = 0;
(function delay(duration) {
  test.textContent = counter;
  if(++counter <= 100)  setTimeout(delay, duration, duration);
})(500)

</script>

.PropLog 02.04.2018 20:35

"сваял" что-то страшное, но почему-то работает...
var animation =  setInterval(function() {
         c+=z;
         while (y < idNumber) {
            var TopLeft = arrayTopLeft[c];
            var returnId = ("object" + i);
            document.getElementById(returnId).style.cssText = TopLeft;
            if (i == (idNumber-1)){
               i=1;
            }
               c += step;
               i++;
               y++;
            }
               i = 1;
               c=1;
               y = 1;
               z++;
            if (z == step){
               z = 0;
             }
    },1000/step);


Часовой пояс GMT +3, время: 22:14.