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

152
23 марта 2017, 21:24
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++;  }; };
Answer 1

Нужно рекурсивно вызывать функцию через 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++;  
    }; 
};
READ ALSO
Вытащить цифры из строки (Javascript)

Вытащить цифры из строки (Javascript)

Почему не удается вытащить цифры из строки ?

256
как изменить тег родителя на новый тег

как изменить тег родителя на новый тег

как можно заменить тег родителя <div class="parent_old> на <a class="parent_new">

263