Проблема с setTimeout, нужно чтобы меду циклами while была пауза

Igor

function Game(){

var fi = figureSel(it);
f = eval(fi + '.position');
var color = eval(fi + '.colorClass');

var posi = f[0];
var i = 0;
var t = 0;

function Star(){

while(t < 4){
setTimeout(Star, 1000);

    for (i = 0; i < posi.length; i++){
        $(pos(posi[i][0] + t, posi[i][1])).addClass(color);
    };
t++;  }; };
1 ответ

Igor

Нужно рекурсивно вызывать функцию через SetTimeout 4 раза, а не пихать while в Star, который вызывается через 1 секунду, получается каждый раз через секунду вызывается функция Star, в которой цикл четыре раза вызывает опять функцию Star итп

Примерно так:

function Star() {
    if (t < 4) {
        setTimeout(Star, 1000);

        for (i = 0; i < posi.length; i++) {
            $(pos(posi[i][0] + t, posi[i][1])).addClass(color);
        };

        t++;  
    }; 
};

licensed under cc by-sa 3.0 with attribution.