@dnazarko

Как выводить setTimeout в цикле?

в общем не получается выводить в цикле информацию с определенной задержкой в итерациях...
вот код:

var widthCanvas = 500,
      heightCanvas = 200,
      counter = 10;

	for(var i = 0; i < widthCanvas / counter; i++) {
		  for(var j = 0; j < heightCanvas / counter; j++) {
			(function(i) {
				setTimeout(function() {
					console.log(i+ " " + j);
				}, 1000);
			})(i);
		}
	}


выводит сразу список всех итераций, а нужно выводить с задержкой в секунду.........как сделать?
  • Вопрос задан
  • 681 просмотр
Пригласить эксперта
Ответы на вопрос 2
Вы просто прочитайте еще раз ваш код. У вас выполняется цикл, который на каждой итерации запускает новый setTimeout! То есть вы за очень короткий промежуток создаете множество setTimeout, которые выстрелят через ~1 сек. разом (на самом деле не единовременно, так как они будут выполняться последовательно + еще с учетом других поступающих событий, но это сути дела не меняет).

Логика должна быть такой:

var toster = function() { 
    // your code
    setTimeout(toster, 1000);
}
toster();


Но я не совсем понимаю, что вы тут хотите сделать вообще... Возможно, вам нужны иные подходы, но касательно setTimeout, в силу его природы, циклы не нужны.

p.s. Стоит почитать про то, как работают таймеры в JS (и какие бывают вообще).

p.p.s. Ни в коем случае не используйте таймеры для перерисовки canvas. Для этого юзайте вот это.
Ответ написан
Комментировать
VIKINGVyksa
@VIKINGVyksa
front-end developer
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы