Я бы изменил здесь пару вещей.
Использование нескольких setTimeout и установка времени ожидания, так как увеличение значений может вызвать проблемы, если вы хотите их много, время ожидания ограничено в JS .
Один вариант, возможно, использует setInterval в качестве кого-то здесь, как показано, но мой фаворит использует asyn c / await.
Также, если ваш список стал очень длинным, постоянно меняя внутренний HTML не будет очень добрым к DOM, вместо этого создание другого элемента DOM и добавление их будет более эффективным. Другим преимуществом их использования является то, что они значительно упрощают их стилизацию.
Ниже приведен пример использования async/await
и добавления в DOM вместо постоянного обновления внутреннего HTML, и для удовольствия просто придав ему немного стиля.
const delay=ms=>new Promise(r=>setTimeout(r,ms));
(async function() {
const sumFormat = [1,2,3,4];
for (const i of sumFormat) {
const num = document.createElement('span');
num.innerText = i;
factOut.appendChild(num);
await delay(500);
}
}());
span {
padding: 0.2rem 0.4rem;
margin: 0.2rem 0.3em;
background-color: lightblue;
border: 1px solid black;
border-radius: 0.5rem;
}
<div id="factOut"></div>