Вы держите инициализацией последовательность новых повторяющихся таймеров в цикле так что эти функции таймера в конечном счете, срабатывает в ряд с очень малой задержкой между каждым из них (нет, пожалуйста). Таким образом, ваш цикл событий должен быть массово занят, как это:
Время покадровой
T0 ........... интервал # 1 первые пробеги
Т0 + 1 ......... интервал # 2 первые пробеги
Т0 + 3 ......... интервал # 3 первые пробеги
...
T0 + 15 ........ интервал # 16 первые пробеги
.......... .... интервал # 1 повторов
T0 + 16 ........ интервал # 17 первых сеансов
.............. интервал # 2 повторы
.... (много интервалов начинают сходятся во мнении, держать процессор занят)
Если вы настаиваете, чтобы использовать таймер, чтобы задержать рендер доски. Продолжайте повторять свой таймер, даже если новые таймеры добавляются, не имеет большого смысла. Я не уверен, зачем вам это нужно. Это умножает ваши задачи и делает ваше приложение далеко не отзывчивым.
Вы должны лучше использовать тайм-аут, чтобы вызвать вашу функцию в вашем сценарии
Вы можете запустить следующий таймер после того, как предыдущий таймер закончит вместо последовательного запуска массовой загрузки таймеров непрерывно. Скелет кода может выглядеть следующим образом:
var n=0;
function renderBoard(){
resetBoard(); // re-draw chess board without yellow cell
var index = Math.floor((Math.random() * 64));
$('.chess-board tr td').eq(index).css('background-color', 'yellow');
// After finish, add a delay of 150 ms to run the subsequent action
n++;
if (n<100)
setTimeout(renderBoard, 150);
}
setTimeout(renderBoard, 150);
вы используете '' setInterval' в for' петли, в результате чего так много 'setInterval functions' работает параллельно, вы должны очистить предыдущий' setInterval' перед регистрацией нового – vinayakj
Возможно, вы хотите использовать setTimeout вместо setInterval –
Пожалуйста, будьте любезны, чтобы принять чей-то ответ, который был близок или помог решить проблему. Кстати, кто-то запустил ваш вопрос idk, почему так рекомендуется балансировать. – vinayakj